// Copyright (C) 2018-2025 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include <gtest/gtest.h>

#include "common_test_utils/test_common.hpp"
#include "openvino/runtime/system_conf.hpp"
#include "os/cpu_map_info.hpp"

using namespace testing;
using namespace ov;

namespace {

#ifdef __linux__

struct LinuxCpuMapTestCase {
    int _processors;
    int _numa_nodes;
    int _sockets;
    int _cores;
    std::vector<std::vector<int>> _proc_type_table;
    std::vector<std::vector<int>> _cpu_mapping_table;
    std::vector<std::vector<std::string>> system_info_table;
    std::vector<std::string> node_info_table;
};

class LinuxCpuMapCacheParserTests : public ov::test::TestsCommon,
                                    public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
    void SetUp() override {
        const auto& test_data = std::get<0>(GetParam());

        int test_processors = 0;
        int test_numa_nodes = 0;
        int test_sockets = 0;
        int test_cores = 0;
        std::vector<std::vector<int>> test_proc_type_table;
        std::vector<std::vector<int>> test_cpu_mapping_table;

        ov::parse_cache_info_linux(test_data.system_info_table,
                                   test_data.node_info_table,
                                   test_processors,
                                   test_numa_nodes,
                                   test_sockets,
                                   test_cores,
                                   test_proc_type_table,
                                   test_cpu_mapping_table);

        ASSERT_EQ(test_data._processors, test_processors);
        ASSERT_EQ(test_data._numa_nodes, test_numa_nodes);
        ASSERT_EQ(test_data._sockets, test_sockets);
        ASSERT_EQ(test_data._cores, test_cores);
        ASSERT_EQ(test_data._proc_type_table, test_proc_type_table);
        ASSERT_EQ(test_data._cpu_mapping_table, test_cpu_mapping_table);
    }
};

class LinuxGetCpuMapFromCoresTests : public ov::test::TestsCommon,
                                     public testing::WithParamInterface<std::tuple<LinuxCpuMapTestCase>> {
public:
    void SetUp() override {
        const auto& test_data = std::get<0>(GetParam());

        std::vector<std::vector<int>> test_proc_type_table;
        std::vector<std::vector<int>> test_cpu_mapping_table;

        ov::get_cpu_mapping_from_cores(test_data._processors,
                                       test_data._sockets,
                                       test_data._cores,
                                       test_proc_type_table,
                                       test_cpu_mapping_table);

        ASSERT_EQ(test_data._proc_type_table, test_proc_type_table);
        ASSERT_EQ(test_data._cpu_mapping_table, test_cpu_mapping_table);
    }
};

LinuxCpuMapTestCase cache_2sockets_104cores_hyperthreading = {
    208,  // param[expected out]: total 208 logcial processors on this simulated platform
    2,    // param[expected out]: total 2 numa nodes on this simulated platform
    2,    // param[expected out]: total 2 sockets on this simulated platform
    104,  // param[expected out]: total 104 CPU cores on this simulated platform
    {{208, 104, 0, 0, 104, -1, -1},
     {104, 52, 0, 0, 52, 0, 0},
     {104, 52, 0, 0, 52, 1, 1}},  // param[expected out]: The proc_type_table of this simulated platform
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},       {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},       {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},       {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},       {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},       {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1},    {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1},    {13, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1},    {15, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1},    {17, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1},    {19, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1},    {21, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1},    {23, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 24, HYPER_THREADING_PROC, 24, -1},    {25, 0, 0, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 0, 0, 26, HYPER_THREADING_PROC, 26, -1},    {27, 0, 0, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 0, 0, 28, HYPER_THREADING_PROC, 28, -1},    {29, 0, 0, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 0, 0, 30, HYPER_THREADING_PROC, 30, -1},    {31, 0, 0, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 0, 0, 32, HYPER_THREADING_PROC, 32, -1},    {33, 0, 0, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 0, 0, 34, HYPER_THREADING_PROC, 34, -1},    {35, 0, 0, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 0, 0, 36, HYPER_THREADING_PROC, 36, -1},    {37, 0, 0, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 0, 0, 38, HYPER_THREADING_PROC, 38, -1},    {39, 0, 0, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 0, 0, 40, HYPER_THREADING_PROC, 40, -1},    {41, 0, 0, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 0, 0, 42, HYPER_THREADING_PROC, 42, -1},    {43, 0, 0, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 0, 0, 44, HYPER_THREADING_PROC, 44, -1},    {45, 0, 0, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 0, 0, 46, HYPER_THREADING_PROC, 46, -1},    {47, 0, 0, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 48, HYPER_THREADING_PROC, 48, -1},    {49, 0, 0, 49, HYPER_THREADING_PROC, 49, -1},
        {50, 0, 0, 50, HYPER_THREADING_PROC, 50, -1},    {51, 0, 0, 51, HYPER_THREADING_PROC, 51, -1},
        {52, 1, 1, 52, HYPER_THREADING_PROC, 52, -1},    {53, 1, 1, 53, HYPER_THREADING_PROC, 53, -1},
        {54, 1, 1, 54, HYPER_THREADING_PROC, 54, -1},    {55, 1, 1, 55, HYPER_THREADING_PROC, 55, -1},
        {56, 1, 1, 56, HYPER_THREADING_PROC, 56, -1},    {57, 1, 1, 57, HYPER_THREADING_PROC, 57, -1},
        {58, 1, 1, 58, HYPER_THREADING_PROC, 58, -1},    {59, 1, 1, 59, HYPER_THREADING_PROC, 59, -1},
        {60, 1, 1, 60, HYPER_THREADING_PROC, 60, -1},    {61, 1, 1, 61, HYPER_THREADING_PROC, 61, -1},
        {62, 1, 1, 62, HYPER_THREADING_PROC, 62, -1},    {63, 1, 1, 63, HYPER_THREADING_PROC, 63, -1},
        {64, 1, 1, 64, HYPER_THREADING_PROC, 64, -1},    {65, 1, 1, 65, HYPER_THREADING_PROC, 65, -1},
        {66, 1, 1, 66, HYPER_THREADING_PROC, 66, -1},    {67, 1, 1, 67, HYPER_THREADING_PROC, 67, -1},
        {68, 1, 1, 68, HYPER_THREADING_PROC, 68, -1},    {69, 1, 1, 69, HYPER_THREADING_PROC, 69, -1},
        {70, 1, 1, 70, HYPER_THREADING_PROC, 70, -1},    {71, 1, 1, 71, HYPER_THREADING_PROC, 71, -1},
        {72, 1, 1, 72, HYPER_THREADING_PROC, 72, -1},    {73, 1, 1, 73, HYPER_THREADING_PROC, 73, -1},
        {74, 1, 1, 74, HYPER_THREADING_PROC, 74, -1},    {75, 1, 1, 75, HYPER_THREADING_PROC, 75, -1},
        {76, 1, 1, 76, HYPER_THREADING_PROC, 76, -1},    {77, 1, 1, 77, HYPER_THREADING_PROC, 77, -1},
        {78, 1, 1, 78, HYPER_THREADING_PROC, 78, -1},    {79, 1, 1, 79, HYPER_THREADING_PROC, 79, -1},
        {80, 1, 1, 80, HYPER_THREADING_PROC, 80, -1},    {81, 1, 1, 81, HYPER_THREADING_PROC, 81, -1},
        {82, 1, 1, 82, HYPER_THREADING_PROC, 82, -1},    {83, 1, 1, 83, HYPER_THREADING_PROC, 83, -1},
        {84, 1, 1, 84, HYPER_THREADING_PROC, 84, -1},    {85, 1, 1, 85, HYPER_THREADING_PROC, 85, -1},
        {86, 1, 1, 86, HYPER_THREADING_PROC, 86, -1},    {87, 1, 1, 87, HYPER_THREADING_PROC, 87, -1},
        {88, 1, 1, 88, HYPER_THREADING_PROC, 88, -1},    {89, 1, 1, 89, HYPER_THREADING_PROC, 89, -1},
        {90, 1, 1, 90, HYPER_THREADING_PROC, 90, -1},    {91, 1, 1, 91, HYPER_THREADING_PROC, 91, -1},
        {92, 1, 1, 92, HYPER_THREADING_PROC, 92, -1},    {93, 1, 1, 93, HYPER_THREADING_PROC, 93, -1},
        {94, 1, 1, 94, HYPER_THREADING_PROC, 94, -1},    {95, 1, 1, 95, HYPER_THREADING_PROC, 95, -1},
        {96, 1, 1, 96, HYPER_THREADING_PROC, 96, -1},    {97, 1, 1, 97, HYPER_THREADING_PROC, 97, -1},
        {98, 1, 1, 98, HYPER_THREADING_PROC, 98, -1},    {99, 1, 1, 99, HYPER_THREADING_PROC, 99, -1},
        {100, 1, 1, 100, HYPER_THREADING_PROC, 100, -1}, {101, 1, 1, 101, HYPER_THREADING_PROC, 101, -1},
        {102, 1, 1, 102, HYPER_THREADING_PROC, 102, -1}, {103, 1, 1, 103, HYPER_THREADING_PROC, 103, -1},
        {104, 0, 0, 0, MAIN_CORE_PROC, 0, -1},           {105, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {106, 0, 0, 2, MAIN_CORE_PROC, 2, -1},           {107, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {108, 0, 0, 4, MAIN_CORE_PROC, 4, -1},           {109, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {110, 0, 0, 6, MAIN_CORE_PROC, 6, -1},           {111, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {112, 0, 0, 8, MAIN_CORE_PROC, 8, -1},           {113, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {114, 0, 0, 10, MAIN_CORE_PROC, 10, -1},         {115, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {116, 0, 0, 12, MAIN_CORE_PROC, 12, -1},         {117, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {118, 0, 0, 14, MAIN_CORE_PROC, 14, -1},         {119, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {120, 0, 0, 16, MAIN_CORE_PROC, 16, -1},         {121, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {122, 0, 0, 18, MAIN_CORE_PROC, 18, -1},         {123, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {124, 0, 0, 20, MAIN_CORE_PROC, 20, -1},         {125, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {126, 0, 0, 22, MAIN_CORE_PROC, 22, -1},         {127, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {128, 0, 0, 24, MAIN_CORE_PROC, 24, -1},         {129, 0, 0, 25, MAIN_CORE_PROC, 25, -1},
        {130, 0, 0, 26, MAIN_CORE_PROC, 26, -1},         {131, 0, 0, 27, MAIN_CORE_PROC, 27, -1},
        {132, 0, 0, 28, MAIN_CORE_PROC, 28, -1},         {133, 0, 0, 29, MAIN_CORE_PROC, 29, -1},
        {134, 0, 0, 30, MAIN_CORE_PROC, 30, -1},         {135, 0, 0, 31, MAIN_CORE_PROC, 31, -1},
        {136, 0, 0, 32, MAIN_CORE_PROC, 32, -1},         {137, 0, 0, 33, MAIN_CORE_PROC, 33, -1},
        {138, 0, 0, 34, MAIN_CORE_PROC, 34, -1},         {139, 0, 0, 35, MAIN_CORE_PROC, 35, -1},
        {140, 0, 0, 36, MAIN_CORE_PROC, 36, -1},         {141, 0, 0, 37, MAIN_CORE_PROC, 37, -1},
        {142, 0, 0, 38, MAIN_CORE_PROC, 38, -1},         {143, 0, 0, 39, MAIN_CORE_PROC, 39, -1},
        {144, 0, 0, 40, MAIN_CORE_PROC, 40, -1},         {145, 0, 0, 41, MAIN_CORE_PROC, 41, -1},
        {146, 0, 0, 42, MAIN_CORE_PROC, 42, -1},         {147, 0, 0, 43, MAIN_CORE_PROC, 43, -1},
        {148, 0, 0, 44, MAIN_CORE_PROC, 44, -1},         {149, 0, 0, 45, MAIN_CORE_PROC, 45, -1},
        {150, 0, 0, 46, MAIN_CORE_PROC, 46, -1},         {151, 0, 0, 47, MAIN_CORE_PROC, 47, -1},
        {152, 0, 0, 48, MAIN_CORE_PROC, 48, -1},         {153, 0, 0, 49, MAIN_CORE_PROC, 49, -1},
        {154, 0, 0, 50, MAIN_CORE_PROC, 50, -1},         {155, 0, 0, 51, MAIN_CORE_PROC, 51, -1},
        {156, 1, 1, 52, MAIN_CORE_PROC, 52, -1},         {157, 1, 1, 53, MAIN_CORE_PROC, 53, -1},
        {158, 1, 1, 54, MAIN_CORE_PROC, 54, -1},         {159, 1, 1, 55, MAIN_CORE_PROC, 55, -1},
        {160, 1, 1, 56, MAIN_CORE_PROC, 56, -1},         {161, 1, 1, 57, MAIN_CORE_PROC, 57, -1},
        {162, 1, 1, 58, MAIN_CORE_PROC, 58, -1},         {163, 1, 1, 59, MAIN_CORE_PROC, 59, -1},
        {164, 1, 1, 60, MAIN_CORE_PROC, 60, -1},         {165, 1, 1, 61, MAIN_CORE_PROC, 61, -1},
        {166, 1, 1, 62, MAIN_CORE_PROC, 62, -1},         {167, 1, 1, 63, MAIN_CORE_PROC, 63, -1},
        {168, 1, 1, 64, MAIN_CORE_PROC, 64, -1},         {169, 1, 1, 65, MAIN_CORE_PROC, 65, -1},
        {170, 1, 1, 66, MAIN_CORE_PROC, 66, -1},         {171, 1, 1, 67, MAIN_CORE_PROC, 67, -1},
        {172, 1, 1, 68, MAIN_CORE_PROC, 68, -1},         {173, 1, 1, 69, MAIN_CORE_PROC, 69, -1},
        {174, 1, 1, 70, MAIN_CORE_PROC, 70, -1},         {175, 1, 1, 71, MAIN_CORE_PROC, 71, -1},
        {176, 1, 1, 72, MAIN_CORE_PROC, 72, -1},         {177, 1, 1, 73, MAIN_CORE_PROC, 73, -1},
        {178, 1, 1, 74, MAIN_CORE_PROC, 74, -1},         {179, 1, 1, 75, MAIN_CORE_PROC, 75, -1},
        {180, 1, 1, 76, MAIN_CORE_PROC, 76, -1},         {181, 1, 1, 77, MAIN_CORE_PROC, 77, -1},
        {182, 1, 1, 78, MAIN_CORE_PROC, 78, -1},         {183, 1, 1, 79, MAIN_CORE_PROC, 79, -1},
        {184, 1, 1, 80, MAIN_CORE_PROC, 80, -1},         {185, 1, 1, 81, MAIN_CORE_PROC, 81, -1},
        {186, 1, 1, 82, MAIN_CORE_PROC, 82, -1},         {187, 1, 1, 83, MAIN_CORE_PROC, 83, -1},
        {188, 1, 1, 84, MAIN_CORE_PROC, 84, -1},         {189, 1, 1, 85, MAIN_CORE_PROC, 85, -1},
        {190, 1, 1, 86, MAIN_CORE_PROC, 86, -1},         {191, 1, 1, 87, MAIN_CORE_PROC, 87, -1},
        {192, 1, 1, 88, MAIN_CORE_PROC, 88, -1},         {193, 1, 1, 89, MAIN_CORE_PROC, 89, -1},
        {194, 1, 1, 90, MAIN_CORE_PROC, 90, -1},         {195, 1, 1, 91, MAIN_CORE_PROC, 91, -1},
        {196, 1, 1, 92, MAIN_CORE_PROC, 92, -1},         {197, 1, 1, 93, MAIN_CORE_PROC, 93, -1},
        {198, 1, 1, 94, MAIN_CORE_PROC, 94, -1},         {199, 1, 1, 95, MAIN_CORE_PROC, 95, -1},
        {200, 1, 1, 96, MAIN_CORE_PROC, 96, -1},         {201, 1, 1, 97, MAIN_CORE_PROC, 97, -1},
        {202, 1, 1, 98, MAIN_CORE_PROC, 98, -1},         {203, 1, 1, 99, MAIN_CORE_PROC, 99, -1},
        {204, 1, 1, 100, MAIN_CORE_PROC, 100, -1},       {205, 1, 1, 101, MAIN_CORE_PROC, 101, -1},
        {206, 1, 1, 102, MAIN_CORE_PROC, 102, -1},       {207, 1, 1, 103, MAIN_CORE_PROC, 103, -1},
    },  // param[expected out]: The cpu_mapping_table of this simulated platform
    {
        {{"0,104"}, {"0,104"}, {"0-51,104-155"}},       {{"1,105"}, {"1,105"}, {"0-51,104-155"}},
        {{"2,106"}, {"2,106"}, {"0-51,104-155"}},       {{"3,107"}, {"3,107"}, {"0-51,104-155"}},
        {{"4,108"}, {"4,108"}, {"0-51,104-155"}},       {{"5,109"}, {"5,109"}, {"0-51,104-155"}},
        {{"6,110"}, {"6,110"}, {"0-51,104-155"}},       {{"7,111"}, {"7,111"}, {"0-51,104-155"}},
        {{"8,112"}, {"8,112"}, {"0-51,104-155"}},       {{"9,113"}, {"9,113"}, {"0-51,104-155"}},
        {{"10,114"}, {"10,114"}, {"0-51,104-155"}},     {{"11,115"}, {"11,115"}, {"0-51,104-155"}},
        {{"12,116"}, {"12,116"}, {"0-51,104-155"}},     {{"13,117"}, {"13,117"}, {"0-51,104-155"}},
        {{"14,118"}, {"14,118"}, {"0-51,104-155"}},     {{"15,119"}, {"15,119"}, {"0-51,104-155"}},
        {{"16,120"}, {"16,120"}, {"0-51,104-155"}},     {{"17,121"}, {"17,121"}, {"0-51,104-155"}},
        {{"18,122"}, {"18,122"}, {"0-51,104-155"}},     {{"19,123"}, {"19,123"}, {"0-51,104-155"}},
        {{"20,124"}, {"20,124"}, {"0-51,104-155"}},     {{"21,125"}, {"21,125"}, {"0-51,104-155"}},
        {{"22,126"}, {"22,126"}, {"0-51,104-155"}},     {{"23,127"}, {"23,127"}, {"0-51,104-155"}},
        {{"24,128"}, {"24,128"}, {"0-51,104-155"}},     {{"25,129"}, {"25,129"}, {"0-51,104-155"}},
        {{"26,130"}, {"26,130"}, {"0-51,104-155"}},     {{"27,131"}, {"27,131"}, {"0-51,104-155"}},
        {{"28,132"}, {"28,132"}, {"0-51,104-155"}},     {{"29,133"}, {"29,133"}, {"0-51,104-155"}},
        {{"30,134"}, {"30,134"}, {"0-51,104-155"}},     {{"31,135"}, {"31,135"}, {"0-51,104-155"}},
        {{"32,136"}, {"32,136"}, {"0-51,104-155"}},     {{"33,137"}, {"33,137"}, {"0-51,104-155"}},
        {{"34,138"}, {"34,138"}, {"0-51,104-155"}},     {{"35,139"}, {"35,139"}, {"0-51,104-155"}},
        {{"36,140"}, {"36,140"}, {"0-51,104-155"}},     {{"37,141"}, {"37,141"}, {"0-51,104-155"}},
        {{"38,142"}, {"38,142"}, {"0-51,104-155"}},     {{"39,143"}, {"39,143"}, {"0-51,104-155"}},
        {{"40,144"}, {"40,144"}, {"0-51,104-155"}},     {{"41,145"}, {"41,145"}, {"0-51,104-155"}},
        {{"42,146"}, {"42,146"}, {"0-51,104-155"}},     {{"43,147"}, {"43,147"}, {"0-51,104-155"}},
        {{"44,148"}, {"44,148"}, {"0-51,104-155"}},     {{"45,149"}, {"45,149"}, {"0-51,104-155"}},
        {{"46,150"}, {"46,150"}, {"0-51,104-155"}},     {{"47,151"}, {"47,151"}, {"0-51,104-155"}},
        {{"48,152"}, {"48,152"}, {"0-51,104-155"}},     {{"49,153"}, {"49,153"}, {"0-51,104-155"}},
        {{"50,154"}, {"50,154"}, {"0-51,104-155"}},     {{"51,155"}, {"51,155"}, {"0-51,104-155"}},
        {{"52,156"}, {"52,156"}, {"52-103,156-207"}},   {{"53,157"}, {"53,157"}, {"52-103,156-207"}},
        {{"54,158"}, {"54,158"}, {"52-103,156-207"}},   {{"55,159"}, {"55,159"}, {"52-103,156-207"}},
        {{"56,160"}, {"56,160"}, {"52-103,156-207"}},   {{"57,161"}, {"57,161"}, {"52-103,156-207"}},
        {{"58,162"}, {"58,162"}, {"52-103,156-207"}},   {{"59,163"}, {"59,163"}, {"52-103,156-207"}},
        {{"60,164"}, {"60,164"}, {"52-103,156-207"}},   {{"61,165"}, {"61,165"}, {"52-103,156-207"}},
        {{"62,166"}, {"62,166"}, {"52-103,156-207"}},   {{"63,167"}, {"63,167"}, {"52-103,156-207"}},
        {{"64,168"}, {"64,168"}, {"52-103,156-207"}},   {{"65,169"}, {"65,169"}, {"52-103,156-207"}},
        {{"66,170"}, {"66,170"}, {"52-103,156-207"}},   {{"67,171"}, {"67,171"}, {"52-103,156-207"}},
        {{"68,172"}, {"68,172"}, {"52-103,156-207"}},   {{"69,173"}, {"69,173"}, {"52-103,156-207"}},
        {{"70,174"}, {"70,174"}, {"52-103,156-207"}},   {{"71,175"}, {"71,175"}, {"52-103,156-207"}},
        {{"72,176"}, {"72,176"}, {"52-103,156-207"}},   {{"73,177"}, {"73,177"}, {"52-103,156-207"}},
        {{"74,178"}, {"74,178"}, {"52-103,156-207"}},   {{"75,179"}, {"75,179"}, {"52-103,156-207"}},
        {{"76,180"}, {"76,180"}, {"52-103,156-207"}},   {{"77,181"}, {"77,181"}, {"52-103,156-207"}},
        {{"78,182"}, {"78,182"}, {"52-103,156-207"}},   {{"79,183"}, {"79,183"}, {"52-103,156-207"}},
        {{"80,184"}, {"80,184"}, {"52-103,156-207"}},   {{"81,185"}, {"81,185"}, {"52-103,156-207"}},
        {{"82,186"}, {"82,186"}, {"52-103,156-207"}},   {{"83,187"}, {"83,187"}, {"52-103,156-207"}},
        {{"84,188"}, {"84,188"}, {"52-103,156-207"}},   {{"85,189"}, {"85,189"}, {"52-103,156-207"}},
        {{"86,190"}, {"86,190"}, {"52-103,156-207"}},   {{"87,191"}, {"87,191"}, {"52-103,156-207"}},
        {{"88,192"}, {"88,192"}, {"52-103,156-207"}},   {{"89,193"}, {"89,193"}, {"52-103,156-207"}},
        {{"90,194"}, {"90,194"}, {"52-103,156-207"}},   {{"91,195"}, {"91,195"}, {"52-103,156-207"}},
        {{"92,196"}, {"92,196"}, {"52-103,156-207"}},   {{"93,197"}, {"93,197"}, {"52-103,156-207"}},
        {{"94,198"}, {"94,198"}, {"52-103,156-207"}},   {{"95,199"}, {"95,199"}, {"52-103,156-207"}},
        {{"96,200"}, {"96,200"}, {"52-103,156-207"}},   {{"97,201"}, {"97,201"}, {"52-103,156-207"}},
        {{"98,202"}, {"98,202"}, {"52-103,156-207"}},   {{"99,203"}, {"99,203"}, {"52-103,156-207"}},
        {{"100,204"}, {"100,204"}, {"52-103,156-207"}}, {{"101,205"}, {"101,205"}, {"52-103,156-207"}},
        {{"102,206"}, {"102,206"}, {"52-103,156-207"}}, {{"103,207"}, {"103,207"}, {"52-103,156-207"}},
        {{"0,104"}, {"0,104"}, {"0-51,104-155"}},       {{"1,105"}, {"1,105"}, {"0-51,104-155"}},
        {{"2,106"}, {"2,106"}, {"0-51,104-155"}},       {{"3,107"}, {"3,107"}, {"0-51,104-155"}},
        {{"4,108"}, {"4,108"}, {"0-51,104-155"}},       {{"5,109"}, {"5,109"}, {"0-51,104-155"}},
        {{"6,110"}, {"6,110"}, {"0-51,104-155"}},       {{"7,111"}, {"7,111"}, {"0-51,104-155"}},
        {{"8,112"}, {"8,112"}, {"0-51,104-155"}},       {{"9,113"}, {"9,113"}, {"0-51,104-155"}},
        {{"10,114"}, {"10,114"}, {"0-51,104-155"}},     {{"11,115"}, {"11,115"}, {"0-51,104-155"}},
        {{"12,116"}, {"12,116"}, {"0-51,104-155"}},     {{"13,117"}, {"13,117"}, {"0-51,104-155"}},
        {{"14,118"}, {"14,118"}, {"0-51,104-155"}},     {{"15,119"}, {"15,119"}, {"0-51,104-155"}},
        {{"16,120"}, {"16,120"}, {"0-51,104-155"}},     {{"17,121"}, {"17,121"}, {"0-51,104-155"}},
        {{"18,122"}, {"18,122"}, {"0-51,104-155"}},     {{"19,123"}, {"19,123"}, {"0-51,104-155"}},
        {{"20,124"}, {"20,124"}, {"0-51,104-155"}},     {{"21,125"}, {"21,125"}, {"0-51,104-155"}},
        {{"22,126"}, {"22,126"}, {"0-51,104-155"}},     {{"23,127"}, {"23,127"}, {"0-51,104-155"}},
        {{"24,128"}, {"24,128"}, {"0-51,104-155"}},     {{"25,129"}, {"25,129"}, {"0-51,104-155"}},
        {{"26,130"}, {"26,130"}, {"0-51,104-155"}},     {{"27,131"}, {"27,131"}, {"0-51,104-155"}},
        {{"28,132"}, {"28,132"}, {"0-51,104-155"}},     {{"29,133"}, {"29,133"}, {"0-51,104-155"}},
        {{"30,134"}, {"30,134"}, {"0-51,104-155"}},     {{"31,135"}, {"31,135"}, {"0-51,104-155"}},
        {{"32,136"}, {"32,136"}, {"0-51,104-155"}},     {{"33,137"}, {"33,137"}, {"0-51,104-155"}},
        {{"34,138"}, {"34,138"}, {"0-51,104-155"}},     {{"35,139"}, {"35,139"}, {"0-51,104-155"}},
        {{"36,140"}, {"36,140"}, {"0-51,104-155"}},     {{"37,141"}, {"37,141"}, {"0-51,104-155"}},
        {{"38,142"}, {"38,142"}, {"0-51,104-155"}},     {{"39,143"}, {"39,143"}, {"0-51,104-155"}},
        {{"40,144"}, {"40,144"}, {"0-51,104-155"}},     {{"41,145"}, {"41,145"}, {"0-51,104-155"}},
        {{"42,146"}, {"42,146"}, {"0-51,104-155"}},     {{"43,147"}, {"43,147"}, {"0-51,104-155"}},
        {{"44,148"}, {"44,148"}, {"0-51,104-155"}},     {{"45,149"}, {"45,149"}, {"0-51,104-155"}},
        {{"46,150"}, {"46,150"}, {"0-51,104-155"}},     {{"47,151"}, {"47,151"}, {"0-51,104-155"}},
        {{"48,152"}, {"48,152"}, {"0-51,104-155"}},     {{"49,153"}, {"49,153"}, {"0-51,104-155"}},
        {{"50,154"}, {"50,154"}, {"0-51,104-155"}},     {{"51,155"}, {"51,155"}, {"0-51,104-155"}},
        {{"52,156"}, {"52,156"}, {"52-103,156-207"}},   {{"53,157"}, {"53,157"}, {"52-103,156-207"}},
        {{"54,158"}, {"54,158"}, {"52-103,156-207"}},   {{"55,159"}, {"55,159"}, {"52-103,156-207"}},
        {{"56,160"}, {"56,160"}, {"52-103,156-207"}},   {{"57,161"}, {"57,161"}, {"52-103,156-207"}},
        {{"58,162"}, {"58,162"}, {"52-103,156-207"}},   {{"59,163"}, {"59,163"}, {"52-103,156-207"}},
        {{"60,164"}, {"60,164"}, {"52-103,156-207"}},   {{"61,165"}, {"61,165"}, {"52-103,156-207"}},
        {{"62,166"}, {"62,166"}, {"52-103,156-207"}},   {{"63,167"}, {"63,167"}, {"52-103,156-207"}},
        {{"64,168"}, {"64,168"}, {"52-103,156-207"}},   {{"65,169"}, {"65,169"}, {"52-103,156-207"}},
        {{"66,170"}, {"66,170"}, {"52-103,156-207"}},   {{"67,171"}, {"67,171"}, {"52-103,156-207"}},
        {{"68,172"}, {"68,172"}, {"52-103,156-207"}},   {{"69,173"}, {"69,173"}, {"52-103,156-207"}},
        {{"70,174"}, {"70,174"}, {"52-103,156-207"}},   {{"71,175"}, {"71,175"}, {"52-103,156-207"}},
        {{"72,176"}, {"72,176"}, {"52-103,156-207"}},   {{"73,177"}, {"73,177"}, {"52-103,156-207"}},
        {{"74,178"}, {"74,178"}, {"52-103,156-207"}},   {{"75,179"}, {"75,179"}, {"52-103,156-207"}},
        {{"76,180"}, {"76,180"}, {"52-103,156-207"}},   {{"77,181"}, {"77,181"}, {"52-103,156-207"}},
        {{"78,182"}, {"78,182"}, {"52-103,156-207"}},   {{"79,183"}, {"79,183"}, {"52-103,156-207"}},
        {{"80,184"}, {"80,184"}, {"52-103,156-207"}},   {{"81,185"}, {"81,185"}, {"52-103,156-207"}},
        {{"82,186"}, {"82,186"}, {"52-103,156-207"}},   {{"83,187"}, {"83,187"}, {"52-103,156-207"}},
        {{"84,188"}, {"84,188"}, {"52-103,156-207"}},   {{"85,189"}, {"85,189"}, {"52-103,156-207"}},
        {{"86,190"}, {"86,190"}, {"52-103,156-207"}},   {{"87,191"}, {"87,191"}, {"52-103,156-207"}},
        {{"88,192"}, {"88,192"}, {"52-103,156-207"}},   {{"89,193"}, {"89,193"}, {"52-103,156-207"}},
        {{"90,194"}, {"90,194"}, {"52-103,156-207"}},   {{"91,195"}, {"91,195"}, {"52-103,156-207"}},
        {{"92,196"}, {"92,196"}, {"52-103,156-207"}},   {{"93,197"}, {"93,197"}, {"52-103,156-207"}},
        {{"94,198"}, {"94,198"}, {"52-103,156-207"}},   {{"95,199"}, {"95,199"}, {"52-103,156-207"}},
        {{"96,200"}, {"96,200"}, {"52-103,156-207"}},   {{"97,201"}, {"97,201"}, {"52-103,156-207"}},
        {{"98,202"}, {"98,202"}, {"52-103,156-207"}},   {{"99,203"}, {"99,203"}, {"52-103,156-207"}},
        {{"100,204"}, {"100,204"}, {"52-103,156-207"}}, {{"101,205"}, {"101,205"}, {"52-103,156-207"}},
        {{"102,206"}, {"102,206"}, {"52-103,156-207"}}, {{"103,207"}, {"103,207"}, {"52-103,156-207"}},
    },                                       // param[in]: The CPU cache information table of this simulated platform
    {{"0-51,104-155"}, {"52-103,156-207"}},  // param[in]: The numa node information table of this simulated platform
};
LinuxCpuMapTestCase cache_1sockets_96cores = {
    96,
    1,
    1,
    96,
    {{96, 0, 96, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, EFFICIENT_CORE_PROC, 0, -1},    {1, 0, 0, 1, EFFICIENT_CORE_PROC, 0, -1},
        {2, 0, 0, 2, EFFICIENT_CORE_PROC, 0, -1},    {3, 0, 0, 3, EFFICIENT_CORE_PROC, 0, -1},
        {4, 0, 0, 4, EFFICIENT_CORE_PROC, 1, -1},    {5, 0, 0, 5, EFFICIENT_CORE_PROC, 1, -1},
        {6, 0, 0, 6, EFFICIENT_CORE_PROC, 1, -1},    {7, 0, 0, 7, EFFICIENT_CORE_PROC, 1, -1},
        {8, 0, 0, 8, EFFICIENT_CORE_PROC, 2, -1},    {9, 0, 0, 9, EFFICIENT_CORE_PROC, 2, -1},
        {10, 0, 0, 10, EFFICIENT_CORE_PROC, 2, -1},  {11, 0, 0, 11, EFFICIENT_CORE_PROC, 2, -1},
        {12, 0, 0, 12, EFFICIENT_CORE_PROC, 3, -1},  {13, 0, 0, 13, EFFICIENT_CORE_PROC, 3, -1},
        {14, 0, 0, 14, EFFICIENT_CORE_PROC, 3, -1},  {15, 0, 0, 15, EFFICIENT_CORE_PROC, 3, -1},
        {16, 0, 0, 16, EFFICIENT_CORE_PROC, 4, -1},  {17, 0, 0, 17, EFFICIENT_CORE_PROC, 4, -1},
        {18, 0, 0, 18, EFFICIENT_CORE_PROC, 4, -1},  {19, 0, 0, 19, EFFICIENT_CORE_PROC, 4, -1},
        {20, 0, 0, 20, EFFICIENT_CORE_PROC, 5, -1},  {21, 0, 0, 21, EFFICIENT_CORE_PROC, 5, -1},
        {22, 0, 0, 22, EFFICIENT_CORE_PROC, 5, -1},  {23, 0, 0, 23, EFFICIENT_CORE_PROC, 5, -1},
        {24, 0, 0, 24, EFFICIENT_CORE_PROC, 6, -1},  {25, 0, 0, 25, EFFICIENT_CORE_PROC, 6, -1},
        {26, 0, 0, 26, EFFICIENT_CORE_PROC, 6, -1},  {27, 0, 0, 27, EFFICIENT_CORE_PROC, 6, -1},
        {28, 0, 0, 28, EFFICIENT_CORE_PROC, 7, -1},  {29, 0, 0, 29, EFFICIENT_CORE_PROC, 7, -1},
        {30, 0, 0, 30, EFFICIENT_CORE_PROC, 7, -1},  {31, 0, 0, 31, EFFICIENT_CORE_PROC, 7, -1},
        {32, 0, 0, 32, EFFICIENT_CORE_PROC, 8, -1},  {33, 0, 0, 33, EFFICIENT_CORE_PROC, 8, -1},
        {34, 0, 0, 34, EFFICIENT_CORE_PROC, 8, -1},  {35, 0, 0, 35, EFFICIENT_CORE_PROC, 8, -1},
        {36, 0, 0, 36, EFFICIENT_CORE_PROC, 9, -1},  {37, 0, 0, 37, EFFICIENT_CORE_PROC, 9, -1},
        {38, 0, 0, 38, EFFICIENT_CORE_PROC, 9, -1},  {39, 0, 0, 39, EFFICIENT_CORE_PROC, 9, -1},
        {40, 0, 0, 40, EFFICIENT_CORE_PROC, 10, -1}, {41, 0, 0, 41, EFFICIENT_CORE_PROC, 10, -1},
        {42, 0, 0, 42, EFFICIENT_CORE_PROC, 10, -1}, {43, 0, 0, 43, EFFICIENT_CORE_PROC, 10, -1},
        {44, 0, 0, 44, EFFICIENT_CORE_PROC, 11, -1}, {45, 0, 0, 45, EFFICIENT_CORE_PROC, 11, -1},
        {46, 0, 0, 46, EFFICIENT_CORE_PROC, 11, -1}, {47, 0, 0, 47, EFFICIENT_CORE_PROC, 11, -1},
        {48, 0, 0, 48, EFFICIENT_CORE_PROC, 12, -1}, {49, 0, 0, 49, EFFICIENT_CORE_PROC, 12, -1},
        {50, 0, 0, 50, EFFICIENT_CORE_PROC, 12, -1}, {51, 0, 0, 51, EFFICIENT_CORE_PROC, 12, -1},
        {52, 0, 0, 52, EFFICIENT_CORE_PROC, 13, -1}, {53, 0, 0, 53, EFFICIENT_CORE_PROC, 13, -1},
        {54, 0, 0, 54, EFFICIENT_CORE_PROC, 13, -1}, {55, 0, 0, 55, EFFICIENT_CORE_PROC, 13, -1},
        {56, 0, 0, 56, EFFICIENT_CORE_PROC, 14, -1}, {57, 0, 0, 57, EFFICIENT_CORE_PROC, 14, -1},
        {58, 0, 0, 58, EFFICIENT_CORE_PROC, 14, -1}, {59, 0, 0, 59, EFFICIENT_CORE_PROC, 14, -1},
        {60, 0, 0, 60, EFFICIENT_CORE_PROC, 15, -1}, {61, 0, 0, 61, EFFICIENT_CORE_PROC, 15, -1},
        {62, 0, 0, 62, EFFICIENT_CORE_PROC, 15, -1}, {63, 0, 0, 63, EFFICIENT_CORE_PROC, 15, -1},
        {64, 0, 0, 64, EFFICIENT_CORE_PROC, 16, -1}, {65, 0, 0, 65, EFFICIENT_CORE_PROC, 16, -1},
        {66, 0, 0, 66, EFFICIENT_CORE_PROC, 16, -1}, {67, 0, 0, 67, EFFICIENT_CORE_PROC, 16, -1},
        {68, 0, 0, 68, EFFICIENT_CORE_PROC, 17, -1}, {69, 0, 0, 69, EFFICIENT_CORE_PROC, 17, -1},
        {70, 0, 0, 70, EFFICIENT_CORE_PROC, 17, -1}, {71, 0, 0, 71, EFFICIENT_CORE_PROC, 17, -1},
        {72, 0, 0, 72, EFFICIENT_CORE_PROC, 18, -1}, {73, 0, 0, 73, EFFICIENT_CORE_PROC, 18, -1},
        {74, 0, 0, 74, EFFICIENT_CORE_PROC, 18, -1}, {75, 0, 0, 75, EFFICIENT_CORE_PROC, 18, -1},
        {76, 0, 0, 76, EFFICIENT_CORE_PROC, 19, -1}, {77, 0, 0, 77, EFFICIENT_CORE_PROC, 19, -1},
        {78, 0, 0, 78, EFFICIENT_CORE_PROC, 19, -1}, {79, 0, 0, 79, EFFICIENT_CORE_PROC, 19, -1},
        {80, 0, 0, 80, EFFICIENT_CORE_PROC, 20, -1}, {81, 0, 0, 81, EFFICIENT_CORE_PROC, 20, -1},
        {82, 0, 0, 82, EFFICIENT_CORE_PROC, 20, -1}, {83, 0, 0, 83, EFFICIENT_CORE_PROC, 20, -1},
        {84, 0, 0, 84, EFFICIENT_CORE_PROC, 21, -1}, {85, 0, 0, 85, EFFICIENT_CORE_PROC, 21, -1},
        {86, 0, 0, 86, EFFICIENT_CORE_PROC, 21, -1}, {87, 0, 0, 87, EFFICIENT_CORE_PROC, 21, -1},
        {88, 0, 0, 88, EFFICIENT_CORE_PROC, 22, -1}, {89, 0, 0, 89, EFFICIENT_CORE_PROC, 22, -1},
        {90, 0, 0, 90, EFFICIENT_CORE_PROC, 22, -1}, {91, 0, 0, 91, EFFICIENT_CORE_PROC, 22, -1},
        {92, 0, 0, 92, EFFICIENT_CORE_PROC, 23, -1}, {93, 0, 0, 93, EFFICIENT_CORE_PROC, 23, -1},
        {94, 0, 0, 94, EFFICIENT_CORE_PROC, 23, -1}, {95, 0, 0, 95, EFFICIENT_CORE_PROC, 23, -1},
    },
    {
        {"0", "0-3", "0-95"},    {"1", "0-3", "0-95"},    {"2", "0-3", "0-95"},    {"3", "0-3", "0-95"},
        {"4", "4-7", "0-95"},    {"5", "4-7", "0-95"},    {"6", "4-7", "0-95"},    {"7", "4-7", "0-95"},
        {"8", "8-11", "0-95"},   {"9", "8-11", "0-95"},   {"10", "8-11", "0-95"},  {"11", "8-11", "0-95"},
        {"12", "12-15", "0-95"}, {"13", "12-15", "0-95"}, {"14", "12-15", "0-95"}, {"15", "12-15", "0-95"},
        {"16", "16-19", "0-95"}, {"17", "16-19", "0-95"}, {"18", "16-19", "0-95"}, {"19", "16-19", "0-95"},
        {"20", "20-23", "0-95"}, {"21", "20-23", "0-95"}, {"22", "20-23", "0-95"}, {"23", "20-23", "0-95"},
        {"24", "24-27", "0-95"}, {"25", "24-27", "0-95"}, {"26", "24-27", "0-95"}, {"27", "24-27", "0-95"},
        {"28", "28-31", "0-95"}, {"29", "28-31", "0-95"}, {"30", "28-31", "0-95"}, {"31", "28-31", "0-95"},
        {"32", "32-35", "0-95"}, {"33", "32-35", "0-95"}, {"34", "32-35", "0-95"}, {"35", "32-35", "0-95"},
        {"36", "36-39", "0-95"}, {"37", "36-39", "0-95"}, {"38", "36-39", "0-95"}, {"39", "36-39", "0-95"},
        {"40", "40-43", "0-95"}, {"41", "40-43", "0-95"}, {"42", "40-43", "0-95"}, {"43", "40-43", "0-95"},
        {"44", "44-47", "0-95"}, {"45", "44-47", "0-95"}, {"46", "44-47", "0-95"}, {"47", "44-47", "0-95"},
        {"48", "48-51", "0-95"}, {"49", "48-51", "0-95"}, {"50", "48-51", "0-95"}, {"51", "48-51", "0-95"},
        {"52", "52-55", "0-95"}, {"53", "52-55", "0-95"}, {"54", "52-55", "0-95"}, {"55", "52-55", "0-95"},
        {"56", "56-59", "0-95"}, {"57", "56-59", "0-95"}, {"58", "56-59", "0-95"}, {"59", "56-59", "0-95"},
        {"60", "60-63", "0-95"}, {"61", "60-63", "0-95"}, {"62", "60-63", "0-95"}, {"63", "60-63", "0-95"},
        {"64", "64-67", "0-95"}, {"65", "64-67", "0-95"}, {"66", "64-67", "0-95"}, {"67", "64-67", "0-95"},
        {"68", "68-71", "0-95"}, {"69", "68-71", "0-95"}, {"70", "68-71", "0-95"}, {"71", "68-71", "0-95"},
        {"72", "72-75", "0-95"}, {"73", "72-75", "0-95"}, {"74", "72-75", "0-95"}, {"75", "72-75", "0-95"},
        {"76", "76-79", "0-95"}, {"77", "76-79", "0-95"}, {"78", "76-79", "0-95"}, {"79", "76-79", "0-95"},
        {"80", "80-83", "0-95"}, {"81", "80-83", "0-95"}, {"82", "80-83", "0-95"}, {"83", "80-83", "0-95"},
        {"84", "84-87", "0-95"}, {"85", "84-87", "0-95"}, {"86", "84-87", "0-95"}, {"87", "84-87", "0-95"},
        {"88", "88-91", "0-95"}, {"89", "88-91", "0-95"}, {"90", "88-91", "0-95"}, {"91", "88-91", "0-95"},
        {"92", "92-95", "0-95"}, {"93", "92-95", "0-95"}, {"94", "92-95", "0-95"}, {"95", "92-95", "0-95"},
    },
    {
        {"0-95"},
    },
};
LinuxCpuMapTestCase cache_2sockets_56cores_hyperthreading = {
    110,
    2,
    2,
    56,
    {{110, 56, 0, 0, 54, -1, -1}, {54, 28, 0, 0, 26, 0, 0}, {56, 28, 0, 0, 28, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {11, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {12, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {13, 0, 0, 12, HYPER_THREADING_PROC, 12, -1}, {14, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {15, 0, 0, 14, HYPER_THREADING_PROC, 14, -1}, {16, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {17, 0, 0, 16, HYPER_THREADING_PROC, 16, -1}, {18, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {19, 0, 0, 18, HYPER_THREADING_PROC, 18, -1}, {21, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {22, 0, 0, 20, HYPER_THREADING_PROC, 20, -1}, {23, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {24, 0, 0, 22, HYPER_THREADING_PROC, 22, -1}, {25, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {26, 0, 0, 24, HYPER_THREADING_PROC, 24, -1}, {27, 0, 0, 25, HYPER_THREADING_PROC, 25, -1},
        {28, 1, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 1, 1, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 1, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 1, 1, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 1, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 1, 1, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 1, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 1, 1, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 1, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 1, 1, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 1, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 1, 1, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 1, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 1, 1, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 1, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 1, 1, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 1, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 1, 1, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 1, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 1, 1, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 1, 1, 48, HYPER_THREADING_PROC, 48, -1}, {49, 1, 1, 49, HYPER_THREADING_PROC, 49, -1},
        {50, 1, 1, 50, HYPER_THREADING_PROC, 50, -1}, {51, 1, 1, 51, HYPER_THREADING_PROC, 51, -1},
        {52, 1, 1, 52, HYPER_THREADING_PROC, 52, -1}, {53, 1, 1, 53, HYPER_THREADING_PROC, 53, -1},
        {54, 1, 1, 54, HYPER_THREADING_PROC, 54, -1}, {55, 1, 1, 55, HYPER_THREADING_PROC, 55, -1},
        {56, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {57, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {58, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {59, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {60, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {61, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {62, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {63, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {64, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {65, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {66, 0, 0, 26, MAIN_CORE_PROC, 26, -1},       {67, 0, 0, 10, MAIN_CORE_PROC, 10, -1},
        {68, 0, 0, 11, MAIN_CORE_PROC, 11, -1},       {69, 0, 0, 12, MAIN_CORE_PROC, 12, -1},
        {70, 0, 0, 13, MAIN_CORE_PROC, 13, -1},       {71, 0, 0, 14, MAIN_CORE_PROC, 14, -1},
        {72, 0, 0, 15, MAIN_CORE_PROC, 15, -1},       {73, 0, 0, 16, MAIN_CORE_PROC, 16, -1},
        {74, 0, 0, 17, MAIN_CORE_PROC, 17, -1},       {75, 0, 0, 18, MAIN_CORE_PROC, 18, -1},
        {76, 0, 0, 27, MAIN_CORE_PROC, 27, -1},       {77, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {78, 0, 0, 20, MAIN_CORE_PROC, 20, -1},       {79, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {80, 0, 0, 22, MAIN_CORE_PROC, 22, -1},       {81, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {82, 0, 0, 24, MAIN_CORE_PROC, 24, -1},       {83, 0, 0, 25, MAIN_CORE_PROC, 25, -1},
        {84, 1, 1, 28, MAIN_CORE_PROC, 28, -1},       {85, 1, 1, 29, MAIN_CORE_PROC, 29, -1},
        {86, 1, 1, 30, MAIN_CORE_PROC, 30, -1},       {87, 1, 1, 31, MAIN_CORE_PROC, 31, -1},
        {88, 1, 1, 32, MAIN_CORE_PROC, 32, -1},       {89, 1, 1, 33, MAIN_CORE_PROC, 33, -1},
        {90, 1, 1, 34, MAIN_CORE_PROC, 34, -1},       {91, 1, 1, 35, MAIN_CORE_PROC, 35, -1},
        {92, 1, 1, 36, MAIN_CORE_PROC, 36, -1},       {93, 1, 1, 37, MAIN_CORE_PROC, 37, -1},
        {94, 1, 1, 38, MAIN_CORE_PROC, 38, -1},       {95, 1, 1, 39, MAIN_CORE_PROC, 39, -1},
        {96, 1, 1, 40, MAIN_CORE_PROC, 40, -1},       {97, 1, 1, 41, MAIN_CORE_PROC, 41, -1},
        {98, 1, 1, 42, MAIN_CORE_PROC, 42, -1},       {99, 1, 1, 43, MAIN_CORE_PROC, 43, -1},
        {100, 1, 1, 44, MAIN_CORE_PROC, 44, -1},      {101, 1, 1, 45, MAIN_CORE_PROC, 45, -1},
        {102, 1, 1, 46, MAIN_CORE_PROC, 46, -1},      {103, 1, 1, 47, MAIN_CORE_PROC, 47, -1},
        {104, 1, 1, 48, MAIN_CORE_PROC, 48, -1},      {105, 1, 1, 49, MAIN_CORE_PROC, 49, -1},
        {106, 1, 1, 50, MAIN_CORE_PROC, 50, -1},      {107, 1, 1, 51, MAIN_CORE_PROC, 51, -1},
        {108, 1, 1, 52, MAIN_CORE_PROC, 52, -1},      {109, 1, 1, 53, MAIN_CORE_PROC, 53, -1},
        {110, 1, 1, 54, MAIN_CORE_PROC, 54, -1},      {111, 1, 1, 55, MAIN_CORE_PROC, 55, -1},
    },
    {
        {"0,56", "0,56", "0-9,11-19,21-27,56-83"},
        {"1,57", "1,57", "0-9,11-19,21-27,56-83"},
        {"2,58", "2,58", "0-9,11-19,21-27,56-83"},
        {"3,59", "3,59", "0-9,11-19,21-27,56-83"},
        {"4,60", "4,60", "0-9,11-19,21-27,56-83"},
        {"5,61", "5,61", "0-9,11-19,21-27,56-83"},
        {"6,62", "6,62", "0-9,11-19,21-27,56-83"},
        {"7,63", "7,63", "0-9,11-19,21-27,56-83"},
        {"8,64", "8,64", "0-9,11-19,21-27,56-83"},
        {"9,65", "9,65", "0-9,11-19,21-27,56-83"},
        {"", "", ""},
        {"11,67", "11,67", "0-9,11-19,21-27,56-83"},
        {"12,68", "12,68", "0-9,11-19,21-27,56-83"},
        {"13,69", "13,69", "0-9,11-19,21-27,56-83"},
        {"14,70", "14,70", "0-9,11-19,21-27,56-83"},
        {"15,71", "15,71", "0-9,11-19,21-27,56-83"},
        {"16,72", "16,72", "0-9,11-19,21-27,56-83"},
        {"17,73", "17,73", "0-9,11-19,21-27,56-83"},
        {"18,74", "18,74", "0-9,11-19,21-27,56-83"},
        {"19,75", "19,75", "0-9,11-19,21-27,56-83"},
        {"", "", ""},
        {"21,77", "21,77", "0-9,11-19,21-27,56-83"},
        {"22,78", "22,78", "0-9,11-19,21-27,56-83"},
        {"23,79", "23,79", "0-9,11-19,21-27,56-83"},
        {"24,80", "24,80", "0-9,11-19,21-27,56-83"},
        {"25,81", "25,81", "0-9,11-19,21-27,56-83"},
        {"26,82", "26,82", "0-9,11-19,21-27,56-83"},
        {"27,83", "27,83", "0-9,11-19,21-27,56-83"},
        {"28,84", "28,84", "28-55,84-111"},
        {"29,85", "29,85", "28-55,84-111"},
        {"30,86", "30,86", "28-55,84-111"},
        {"31,87", "31,87", "28-55,84-111"},
        {"32,88", "32,88", "28-55,84-111"},
        {"33,89", "33,89", "28-55,84-111"},
        {"34,90", "34,90", "28-55,84-111"},
        {"35,91", "35,91", "28-55,84-111"},
        {"36,92", "36,92", "28-55,84-111"},
        {"37,93", "37,93", "28-55,84-111"},
        {"38,94", "38,94", "28-55,84-111"},
        {"39,95", "39,95", "28-55,84-111"},
        {"40,96", "40,96", "28-55,84-111"},
        {"41,97", "41,97", "28-55,84-111"},
        {"42,98", "42,98", "28-55,84-111"},
        {"43,99", "43,99", "28-55,84-111"},
        {"44,100", "44,100", "28-55,84-111"},
        {"45,101", "45,101", "28-55,84-111"},
        {"46,102", "46,102", "28-55,84-111"},
        {"47,103", "47,103", "28-55,84-111"},
        {"48,104", "48,104", "28-55,84-111"},
        {"49,105", "49,105", "28-55,84-111"},
        {"50,106", "50,106", "28-55,84-111"},
        {"51,107", "51,107", "28-55,84-111"},
        {"52,108", "52,108", "28-55,84-111"},
        {"53,109", "53,109", "28-55,84-111"},
        {"54,110", "54,110", "28-55,84-111"},
        {"55,111", "55,111", "28-55,84-111"},
        {"0,56", "0,56", "0-9,11-19,21-27,56-83"},
        {"1,57", "1,57", "0-9,11-19,21-27,56-83"},
        {"2,58", "2,58", "0-9,11-19,21-27,56-83"},
        {"3,59", "3,59", "0-9,11-19,21-27,56-83"},
        {"4,60", "4,60", "0-9,11-19,21-27,56-83"},
        {"5,61", "5,61", "0-9,11-19,21-27,56-83"},
        {"6,62", "6,62", "0-9,11-19,21-27,56-83"},
        {"7,63", "7,63", "0-9,11-19,21-27,56-83"},
        {"8,64", "8,64", "0-9,11-19,21-27,56-83"},
        {"9,65", "9,65", "0-9,11-19,21-27,56-83"},
        {"66", "66", "0-9,11-19,21-27,56-83"},
        {"11,67", "11,67", "0-9,11-19,21-27,56-83"},
        {"12,68", "12,68", "0-9,11-19,21-27,56-83"},
        {"13,69", "13,69", "0-9,11-19,21-27,56-83"},
        {"14,70", "14,70", "0-9,11-19,21-27,56-83"},
        {"15,71", "15,71", "0-9,11-19,21-27,56-83"},
        {"16,72", "16,72", "0-9,11-19,21-27,56-83"},
        {"17,73", "17,73", "0-9,11-19,21-27,56-83"},
        {"18,74", "18,74", "0-9,11-19,21-27,56-83"},
        {"19,75", "19,75", "0-9,11-19,21-27,56-83"},
        {"76", "76", "0-9,11-19,21-27,56-83"},
        {"21,77", "21,77", "0-9,11-19,21-27,56-83"},
        {"22,78", "22,78", "0-9,11-19,21-27,56-83"},
        {"23,79", "23,79", "0-9,11-19,21-27,56-83"},
        {"24,80", "24,80", "0-9,11-19,21-27,56-83"},
        {"25,81", "25,81", "0-9,11-19,21-27,56-83"},
        {"26,82", "26,82", "0-9,11-19,21-27,56-83"},
        {"27,83", "27,83", "0-9,11-19,21-27,56-83"},
        {"28,84", "28,84", "28-55,84-111"},
        {"29,85", "29,85", "28-55,84-111"},
        {"30,86", "30,86", "28-55,84-111"},
        {"31,87", "31,87", "28-55,84-111"},
        {"32,88", "32,88", "28-55,84-111"},
        {"33,89", "33,89", "28-55,84-111"},
        {"34,90", "34,90", "28-55,84-111"},
        {"35,91", "35,91", "28-55,84-111"},
        {"36,92", "36,92", "28-55,84-111"},
        {"37,93", "37,93", "28-55,84-111"},
        {"38,94", "38,94", "28-55,84-111"},
        {"39,95", "39,95", "28-55,84-111"},
        {"40,96", "40,96", "28-55,84-111"},
        {"41,97", "41,97", "28-55,84-111"},
        {"42,98", "42,98", "28-55,84-111"},
        {"43,99", "43,99", "28-55,84-111"},
        {"44,100", "44,100", "28-55,84-111"},
        {"45,101", "45,101", "28-55,84-111"},
        {"46,102", "46,102", "28-55,84-111"},
        {"47,103", "47,103", "28-55,84-111"},
        {"48,104", "48,104", "28-55,84-111"},
        {"49,105", "49,105", "28-55,84-111"},
        {"50,106", "50,106", "28-55,84-111"},
        {"51,107", "51,107", "28-55,84-111"},
        {"52,108", "52,108", "28-55,84-111"},
        {"53,109", "53,109", "28-55,84-111"},
        {"54,110", "54,110", "28-55,84-111"},
        {"55,111", "55,111", "28-55,84-111"},
    },
    {
        {"0-9,11-19,21-27,56-83"},
        {"28-55,84-111"},
    },
};
LinuxCpuMapTestCase cache_2sockets_48cores_hyperthreading = {
    96,
    2,
    2,
    48,
    {{96, 48, 0, 0, 48, -1, -1}, {48, 24, 0, 0, 24, 0, 0}, {48, 24, 0, 0, 24, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 0, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 0, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 0, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 0, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 0, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 0, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 0, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 0, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 0, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 0, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 0, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 1, 1, 24, HYPER_THREADING_PROC, 24, -1}, {25, 1, 1, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 1, 1, 26, HYPER_THREADING_PROC, 26, -1}, {27, 1, 1, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 1, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 1, 1, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 1, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 1, 1, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 1, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 1, 1, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 1, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 1, 1, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 1, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 1, 1, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 1, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 1, 1, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 1, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 1, 1, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 1, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 1, 1, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 1, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 1, 1, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 1, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 1, 1, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {49, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {50, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {51, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {52, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {53, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {54, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {55, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {56, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {57, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {58, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {59, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {60, 0, 0, 12, MAIN_CORE_PROC, 12, -1},       {61, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {62, 0, 0, 14, MAIN_CORE_PROC, 14, -1},       {63, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {64, 0, 0, 16, MAIN_CORE_PROC, 16, -1},       {65, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {66, 0, 0, 18, MAIN_CORE_PROC, 18, -1},       {67, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {68, 0, 0, 20, MAIN_CORE_PROC, 20, -1},       {69, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {70, 0, 0, 22, MAIN_CORE_PROC, 22, -1},       {71, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {72, 1, 1, 24, MAIN_CORE_PROC, 24, -1},       {73, 1, 1, 25, MAIN_CORE_PROC, 25, -1},
        {74, 1, 1, 26, MAIN_CORE_PROC, 26, -1},       {75, 1, 1, 27, MAIN_CORE_PROC, 27, -1},
        {76, 1, 1, 28, MAIN_CORE_PROC, 28, -1},       {77, 1, 1, 29, MAIN_CORE_PROC, 29, -1},
        {78, 1, 1, 30, MAIN_CORE_PROC, 30, -1},       {79, 1, 1, 31, MAIN_CORE_PROC, 31, -1},
        {80, 1, 1, 32, MAIN_CORE_PROC, 32, -1},       {81, 1, 1, 33, MAIN_CORE_PROC, 33, -1},
        {82, 1, 1, 34, MAIN_CORE_PROC, 34, -1},       {83, 1, 1, 35, MAIN_CORE_PROC, 35, -1},
        {84, 1, 1, 36, MAIN_CORE_PROC, 36, -1},       {85, 1, 1, 37, MAIN_CORE_PROC, 37, -1},
        {86, 1, 1, 38, MAIN_CORE_PROC, 38, -1},       {87, 1, 1, 39, MAIN_CORE_PROC, 39, -1},
        {88, 1, 1, 40, MAIN_CORE_PROC, 40, -1},       {89, 1, 1, 41, MAIN_CORE_PROC, 41, -1},
        {90, 1, 1, 42, MAIN_CORE_PROC, 42, -1},       {91, 1, 1, 43, MAIN_CORE_PROC, 43, -1},
        {92, 1, 1, 44, MAIN_CORE_PROC, 44, -1},       {93, 1, 1, 45, MAIN_CORE_PROC, 45, -1},
        {94, 1, 1, 46, MAIN_CORE_PROC, 46, -1},       {95, 1, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {"0,48", "0,48", "0-23,48-71"},    {"1,49", "1,49", "0-23,48-71"},    {"2,50", "2,50", "0-23,48-71"},
        {"3,51", "3,51", "0-23,48-71"},    {"4,52", "4,52", "0-23,48-71"},    {"5,53", "5,53", "0-23,48-71"},
        {"6,54", "6,54", "0-23,48-71"},    {"7,55", "7,55", "0-23,48-71"},    {"8,56", "8,56", "0-23,48-71"},
        {"9,57", "9,57", "0-23,48-71"},    {"10,58", "10,58", "0-23,48-71"},  {"11,59", "11,59", "0-23,48-71"},
        {"12,60", "12,60", "0-23,48-71"},  {"13,61", "13,61", "0-23,48-71"},  {"14,62", "14,62", "0-23,48-71"},
        {"15,63", "15,63", "0-23,48-71"},  {"16,64", "16,64", "0-23,48-71"},  {"17,65", "17,65", "0-23,48-71"},
        {"18,66", "18,66", "0-23,48-71"},  {"19,67", "19,67", "0-23,48-71"},  {"20,68", "20,68", "0-23,48-71"},
        {"21,69", "21,69", "0-23,48-71"},  {"22,70", "22,70", "0-23,48-71"},  {"23,71", "23,71", "0-23,48-71"},
        {"24,72", "24,72", "24-47,72-95"}, {"25,73", "25,73", "24-47,72-95"}, {"26,74", "26,74", "24-47,72-95"},
        {"27,75", "27,75", "24-47,72-95"}, {"28,76", "28,76", "24-47,72-95"}, {"29,77", "29,77", "24-47,72-95"},
        {"30,78", "30,78", "24-47,72-95"}, {"31,79", "31,79", "24-47,72-95"}, {"32,80", "32,80", "24-47,72-95"},
        {"33,81", "33,81", "24-47,72-95"}, {"34,82", "34,82", "24-47,72-95"}, {"35,83", "35,83", "24-47,72-95"},
        {"36,84", "36,84", "24-47,72-95"}, {"37,85", "37,85", "24-47,72-95"}, {"38,86", "38,86", "24-47,72-95"},
        {"39,87", "39,87", "24-47,72-95"}, {"40,88", "40,88", "24-47,72-95"}, {"41,89", "41,89", "24-47,72-95"},
        {"42,90", "42,90", "24-47,72-95"}, {"43,91", "43,91", "24-47,72-95"}, {"44,92", "44,92", "24-47,72-95"},
        {"45,93", "45,93", "24-47,72-95"}, {"46,94", "46,94", "24-47,72-95"}, {"47,95", "47,95", "24-47,72-95"},
        {"0,48", "0,48", "0-23,48-71"},    {"1,49", "1,49", "0-23,48-71"},    {"2,50", "2,50", "0-23,48-71"},
        {"3,51", "3,51", "0-23,48-71"},    {"4,52", "4,52", "0-23,48-71"},    {"5,53", "5,53", "0-23,48-71"},
        {"6,54", "6,54", "0-23,48-71"},    {"7,55", "7,55", "0-23,48-71"},    {"8,56", "8,56", "0-23,48-71"},
        {"9,57", "9,57", "0-23,48-71"},    {"10,58", "10,58", "0-23,48-71"},  {"11,59", "11,59", "0-23,48-71"},
        {"12,60", "12,60", "0-23,48-71"},  {"13,61", "13,61", "0-23,48-71"},  {"14,62", "14,62", "0-23,48-71"},
        {"15,63", "15,63", "0-23,48-71"},  {"16,64", "16,64", "0-23,48-71"},  {"17,65", "17,65", "0-23,48-71"},
        {"18,66", "18,66", "0-23,48-71"},  {"19,67", "19,67", "0-23,48-71"},  {"20,68", "20,68", "0-23,48-71"},
        {"21,69", "21,69", "0-23,48-71"},  {"22,70", "22,70", "0-23,48-71"},  {"23,71", "23,71", "0-23,48-71"},
        {"24,72", "24,72", "24-47,72-95"}, {"25,73", "25,73", "24-47,72-95"}, {"26,74", "26,74", "24-47,72-95"},
        {"27,75", "27,75", "24-47,72-95"}, {"28,76", "28,76", "24-47,72-95"}, {"29,77", "29,77", "24-47,72-95"},
        {"30,78", "30,78", "24-47,72-95"}, {"31,79", "31,79", "24-47,72-95"}, {"32,80", "32,80", "24-47,72-95"},
        {"33,81", "33,81", "24-47,72-95"}, {"34,82", "34,82", "24-47,72-95"}, {"35,83", "35,83", "24-47,72-95"},
        {"36,84", "36,84", "24-47,72-95"}, {"37,85", "37,85", "24-47,72-95"}, {"38,86", "38,86", "24-47,72-95"},
        {"39,87", "39,87", "24-47,72-95"}, {"40,88", "40,88", "24-47,72-95"}, {"41,89", "41,89", "24-47,72-95"},
        {"42,90", "42,90", "24-47,72-95"}, {"43,91", "43,91", "24-47,72-95"}, {"44,92", "44,92", "24-47,72-95"},
        {"45,93", "45,93", "24-47,72-95"}, {"46,94", "46,94", "24-47,72-95"}, {"47,95", "47,95", "24-47,72-95"},
    },
    {{"0-23,48-71"}, {"24-47,72-95"}},
};
LinuxCpuMapTestCase cache_2sockets_48cores_hyperthreading_1 = {
    96,
    4,
    2,
    48,
    {{96, 48, 0, 0, 48, -1, -1},
     {24, 12, 0, 0, 12, 0, 0},
     {24, 12, 0, 0, 12, 1, 0},
     {24, 12, 0, 0, 12, 2, 1},
     {24, 12, 0, 0, 12, 3, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {11, 0, 0, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 0, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 0, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 0, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 0, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 0, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 0, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 0, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 0, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 1, 0, 20, HYPER_THREADING_PROC, 20, -1}, {21, 1, 0, 21, HYPER_THREADING_PROC, 21, -1},
        {22, 1, 0, 22, HYPER_THREADING_PROC, 22, -1}, {23, 1, 0, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 2, 1, 24, HYPER_THREADING_PROC, 24, -1}, {25, 2, 1, 25, HYPER_THREADING_PROC, 25, -1},
        {26, 2, 1, 26, HYPER_THREADING_PROC, 26, -1}, {27, 2, 1, 27, HYPER_THREADING_PROC, 27, -1},
        {28, 2, 1, 28, HYPER_THREADING_PROC, 28, -1}, {29, 2, 1, 29, HYPER_THREADING_PROC, 29, -1},
        {30, 2, 1, 30, HYPER_THREADING_PROC, 30, -1}, {31, 2, 1, 31, HYPER_THREADING_PROC, 31, -1},
        {32, 2, 1, 32, HYPER_THREADING_PROC, 32, -1}, {33, 2, 1, 33, HYPER_THREADING_PROC, 33, -1},
        {34, 2, 1, 34, HYPER_THREADING_PROC, 34, -1}, {35, 2, 1, 35, HYPER_THREADING_PROC, 35, -1},
        {36, 3, 1, 36, HYPER_THREADING_PROC, 36, -1}, {37, 3, 1, 37, HYPER_THREADING_PROC, 37, -1},
        {38, 3, 1, 38, HYPER_THREADING_PROC, 38, -1}, {39, 3, 1, 39, HYPER_THREADING_PROC, 39, -1},
        {40, 3, 1, 40, HYPER_THREADING_PROC, 40, -1}, {41, 3, 1, 41, HYPER_THREADING_PROC, 41, -1},
        {42, 3, 1, 42, HYPER_THREADING_PROC, 42, -1}, {43, 3, 1, 43, HYPER_THREADING_PROC, 43, -1},
        {44, 3, 1, 44, HYPER_THREADING_PROC, 44, -1}, {45, 3, 1, 45, HYPER_THREADING_PROC, 45, -1},
        {46, 3, 1, 46, HYPER_THREADING_PROC, 46, -1}, {47, 3, 1, 47, HYPER_THREADING_PROC, 47, -1},
        {48, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {49, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {50, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {51, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {52, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {53, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {54, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {55, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {56, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {57, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {58, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {59, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {60, 1, 0, 12, MAIN_CORE_PROC, 12, -1},       {61, 1, 0, 13, MAIN_CORE_PROC, 13, -1},
        {62, 1, 0, 14, MAIN_CORE_PROC, 14, -1},       {63, 1, 0, 15, MAIN_CORE_PROC, 15, -1},
        {64, 1, 0, 16, MAIN_CORE_PROC, 16, -1},       {65, 1, 0, 17, MAIN_CORE_PROC, 17, -1},
        {66, 1, 0, 18, MAIN_CORE_PROC, 18, -1},       {67, 1, 0, 19, MAIN_CORE_PROC, 19, -1},
        {68, 1, 0, 20, MAIN_CORE_PROC, 20, -1},       {69, 1, 0, 21, MAIN_CORE_PROC, 21, -1},
        {70, 1, 0, 22, MAIN_CORE_PROC, 22, -1},       {71, 1, 0, 23, MAIN_CORE_PROC, 23, -1},
        {72, 2, 1, 24, MAIN_CORE_PROC, 24, -1},       {73, 2, 1, 25, MAIN_CORE_PROC, 25, -1},
        {74, 2, 1, 26, MAIN_CORE_PROC, 26, -1},       {75, 2, 1, 27, MAIN_CORE_PROC, 27, -1},
        {76, 2, 1, 28, MAIN_CORE_PROC, 28, -1},       {77, 2, 1, 29, MAIN_CORE_PROC, 29, -1},
        {78, 2, 1, 30, MAIN_CORE_PROC, 30, -1},       {79, 2, 1, 31, MAIN_CORE_PROC, 31, -1},
        {80, 2, 1, 32, MAIN_CORE_PROC, 32, -1},       {81, 2, 1, 33, MAIN_CORE_PROC, 33, -1},
        {82, 2, 1, 34, MAIN_CORE_PROC, 34, -1},       {83, 2, 1, 35, MAIN_CORE_PROC, 35, -1},
        {84, 3, 1, 36, MAIN_CORE_PROC, 36, -1},       {85, 3, 1, 37, MAIN_CORE_PROC, 37, -1},
        {86, 3, 1, 38, MAIN_CORE_PROC, 38, -1},       {87, 3, 1, 39, MAIN_CORE_PROC, 39, -1},
        {88, 3, 1, 40, MAIN_CORE_PROC, 40, -1},       {89, 3, 1, 41, MAIN_CORE_PROC, 41, -1},
        {90, 3, 1, 42, MAIN_CORE_PROC, 42, -1},       {91, 3, 1, 43, MAIN_CORE_PROC, 43, -1},
        {92, 3, 1, 44, MAIN_CORE_PROC, 44, -1},       {93, 3, 1, 45, MAIN_CORE_PROC, 45, -1},
        {94, 3, 1, 46, MAIN_CORE_PROC, 46, -1},       {95, 3, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {"0,48", "0,48", "0-23,48-71"},    {"1,49", "1,49", "0-23,48-71"},    {"2,50", "2,50", "0-23,48-71"},
        {"3,51", "3,51", "0-23,48-71"},    {"4,52", "4,52", "0-23,48-71"},    {"5,53", "5,53", "0-23,48-71"},
        {"6,54", "6,54", "0-23,48-71"},    {"7,55", "7,55", "0-23,48-71"},    {"8,56", "8,56", "0-23,48-71"},
        {"9,57", "9,57", "0-23,48-71"},    {"10,58", "10,58", "0-23,48-71"},  {"11,59", "11,59", "0-23,48-71"},
        {"12,60", "12,60", "0-23,48-71"},  {"13,61", "13,61", "0-23,48-71"},  {"14,62", "14,62", "0-23,48-71"},
        {"15,63", "15,63", "0-23,48-71"},  {"16,64", "16,64", "0-23,48-71"},  {"17,65", "17,65", "0-23,48-71"},
        {"18,66", "18,66", "0-23,48-71"},  {"19,67", "19,67", "0-23,48-71"},  {"20,68", "20,68", "0-23,48-71"},
        {"21,69", "21,69", "0-23,48-71"},  {"22,70", "22,70", "0-23,48-71"},  {"23,71", "23,71", "0-23,48-71"},
        {"24,72", "24,72", "24-47,72-95"}, {"25,73", "25,73", "24-47,72-95"}, {"26,74", "26,74", "24-47,72-95"},
        {"27,75", "27,75", "24-47,72-95"}, {"28,76", "28,76", "24-47,72-95"}, {"29,77", "29,77", "24-47,72-95"},
        {"30,78", "30,78", "24-47,72-95"}, {"31,79", "31,79", "24-47,72-95"}, {"32,80", "32,80", "24-47,72-95"},
        {"33,81", "33,81", "24-47,72-95"}, {"34,82", "34,82", "24-47,72-95"}, {"35,83", "35,83", "24-47,72-95"},
        {"36,84", "36,84", "24-47,72-95"}, {"37,85", "37,85", "24-47,72-95"}, {"38,86", "38,86", "24-47,72-95"},
        {"39,87", "39,87", "24-47,72-95"}, {"40,88", "40,88", "24-47,72-95"}, {"41,89", "41,89", "24-47,72-95"},
        {"42,90", "42,90", "24-47,72-95"}, {"43,91", "43,91", "24-47,72-95"}, {"44,92", "44,92", "24-47,72-95"},
        {"45,93", "45,93", "24-47,72-95"}, {"46,94", "46,94", "24-47,72-95"}, {"47,95", "47,95", "24-47,72-95"},
        {"0,48", "0,48", "0-23,48-71"},    {"1,49", "1,49", "0-23,48-71"},    {"2,50", "2,50", "0-23,48-71"},
        {"3,51", "3,51", "0-23,48-71"},    {"4,52", "4,52", "0-23,48-71"},    {"5,53", "5,53", "0-23,48-71"},
        {"6,54", "6,54", "0-23,48-71"},    {"7,55", "7,55", "0-23,48-71"},    {"8,56", "8,56", "0-23,48-71"},
        {"9,57", "9,57", "0-23,48-71"},    {"10,58", "10,58", "0-23,48-71"},  {"11,59", "11,59", "0-23,48-71"},
        {"12,60", "12,60", "0-23,48-71"},  {"13,61", "13,61", "0-23,48-71"},  {"14,62", "14,62", "0-23,48-71"},
        {"15,63", "15,63", "0-23,48-71"},  {"16,64", "16,64", "0-23,48-71"},  {"17,65", "17,65", "0-23,48-71"},
        {"18,66", "18,66", "0-23,48-71"},  {"19,67", "19,67", "0-23,48-71"},  {"20,68", "20,68", "0-23,48-71"},
        {"21,69", "21,69", "0-23,48-71"},  {"22,70", "22,70", "0-23,48-71"},  {"23,71", "23,71", "0-23,48-71"},
        {"24,72", "24,72", "24-47,72-95"}, {"25,73", "25,73", "24-47,72-95"}, {"26,74", "26,74", "24-47,72-95"},
        {"27,75", "27,75", "24-47,72-95"}, {"28,76", "28,76", "24-47,72-95"}, {"29,77", "29,77", "24-47,72-95"},
        {"30,78", "30,78", "24-47,72-95"}, {"31,79", "31,79", "24-47,72-95"}, {"32,80", "32,80", "24-47,72-95"},
        {"33,81", "33,81", "24-47,72-95"}, {"34,82", "34,82", "24-47,72-95"}, {"35,83", "35,83", "24-47,72-95"},
        {"36,84", "36,84", "24-47,72-95"}, {"37,85", "37,85", "24-47,72-95"}, {"38,86", "38,86", "24-47,72-95"},
        {"39,87", "39,87", "24-47,72-95"}, {"40,88", "40,88", "24-47,72-95"}, {"41,89", "41,89", "24-47,72-95"},
        {"42,90", "42,90", "24-47,72-95"}, {"43,91", "43,91", "24-47,72-95"}, {"44,92", "44,92", "24-47,72-95"},
        {"45,93", "45,93", "24-47,72-95"}, {"46,94", "46,94", "24-47,72-95"}, {"47,95", "47,95", "24-47,72-95"},
    },
    {{"0-11,48-59"}, {"12-23,60-71"}, {"24-35,72-83"}, {"36-47,84-95"}},
};
LinuxCpuMapTestCase cache_2sockets_24cores_hyperthreading = {
    48,
    2,
    2,
    24,
    {{48, 24, 0, 0, 24, -1, -1}, {24, 12, 0, 0, 12, 0, 0}, {24, 12, 0, 0, 12, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 1, 1, 12, HYPER_THREADING_PROC, 12, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},    {3, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {5, 1, 1, 14, HYPER_THREADING_PROC, 14, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},    {7, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {9, 1, 1, 16, HYPER_THREADING_PROC, 16, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},   {11, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {12, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},   {13, 1, 1, 18, HYPER_THREADING_PROC, 18, -1},
        {14, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},   {15, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {16, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},   {17, 1, 1, 20, HYPER_THREADING_PROC, 20, -1},
        {18, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},   {19, 1, 1, 21, HYPER_THREADING_PROC, 21, -1},
        {20, 0, 0, 10, HYPER_THREADING_PROC, 10, -1}, {21, 1, 1, 22, HYPER_THREADING_PROC, 22, -1},
        {22, 0, 0, 11, HYPER_THREADING_PROC, 11, -1}, {23, 1, 1, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {25, 1, 1, 12, MAIN_CORE_PROC, 12, -1},
        {26, 0, 0, 1, MAIN_CORE_PROC, 1, -1},         {27, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {28, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {29, 1, 1, 14, MAIN_CORE_PROC, 14, -1},
        {30, 0, 0, 3, MAIN_CORE_PROC, 3, -1},         {31, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {32, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {33, 1, 1, 16, MAIN_CORE_PROC, 16, -1},
        {34, 0, 0, 5, MAIN_CORE_PROC, 5, -1},         {35, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {36, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {37, 1, 1, 18, MAIN_CORE_PROC, 18, -1},
        {38, 0, 0, 7, MAIN_CORE_PROC, 7, -1},         {39, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
        {40, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {41, 1, 1, 20, MAIN_CORE_PROC, 20, -1},
        {42, 0, 0, 9, MAIN_CORE_PROC, 9, -1},         {43, 1, 1, 21, MAIN_CORE_PROC, 21, -1},
        {44, 0, 0, 10, MAIN_CORE_PROC, 10, -1},       {45, 1, 1, 22, MAIN_CORE_PROC, 22, -1},
        {46, 0, 0, 11, MAIN_CORE_PROC, 11, -1},       {47, 1, 1, 23, MAIN_CORE_PROC, 23, -1},
    },
    {
        {"0,24", "0,24", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"1,25", "1,25", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"2,26", "2,26", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"3,27", "3,27", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"4,28", "4,28", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"5,29", "5,29", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"6,30", "6,30", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"7,31", "7,31", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"8,32", "8,32", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"9,33", "9,33", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"10,34", "10,34", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"11,35", "11,35", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"12,36", "12,36", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"13,37", "13,37", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"14,38", "14,38", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"15,39", "15,39", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"16,40", "16,40", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"17,41", "17,41", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"18,42", "18,42", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"19,43", "19,43", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"20,44", "20,44", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"21,45", "21,45", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"22,46", "22,46", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"23,47", "23,47", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"0,24", "0,24", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"1,25", "1,25", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"2,26", "2,26", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"3,27", "3,27", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"4,28", "4,28", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"5,29", "5,29", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"6,30", "6,30", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"7,31", "7,31", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"8,32", "8,32", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"9,33", "9,33", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"10,34", "10,34", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"11,35", "11,35", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"12,36", "12,36", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"13,37", "13,37", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"14,38", "14,38", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"15,39", "15,39", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"16,40", "16,40", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"17,41", "17,41", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"18,42", "18,42", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"19,43", "19,43", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"20,44", "20,44", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"21,45", "21,45", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"22,46", "22,46", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"23,47", "23,47", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
    },
    {{"0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
     {"1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"}},
};
LinuxCpuMapTestCase cache_2sockets_24cores_hyperthreading_1 = {
    48,
    4,
    2,
    24,
    {{48, 24, 0, 0, 24, -1, -1},
     {12, 6, 0, 0, 6, 0, 0},
     {12, 6, 0, 0, 6, 1, 0},
     {12, 6, 0, 0, 6, 2, 1},
     {12, 6, 0, 0, 6, 3, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 2, 1, 12, HYPER_THREADING_PROC, 12, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},    {3, 2, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {5, 2, 1, 14, HYPER_THREADING_PROC, 14, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},    {7, 2, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {9, 2, 1, 16, HYPER_THREADING_PROC, 16, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},   {11, 2, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {12, 1, 0, 6, HYPER_THREADING_PROC, 6, -1},   {13, 3, 1, 18, HYPER_THREADING_PROC, 18, -1},
        {14, 1, 0, 7, HYPER_THREADING_PROC, 7, -1},   {15, 3, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {16, 1, 0, 8, HYPER_THREADING_PROC, 8, -1},   {17, 3, 1, 20, HYPER_THREADING_PROC, 20, -1},
        {18, 1, 0, 9, HYPER_THREADING_PROC, 9, -1},   {19, 3, 1, 21, HYPER_THREADING_PROC, 21, -1},
        {20, 1, 0, 10, HYPER_THREADING_PROC, 10, -1}, {21, 3, 1, 22, HYPER_THREADING_PROC, 22, -1},
        {22, 1, 0, 11, HYPER_THREADING_PROC, 11, -1}, {23, 3, 1, 23, HYPER_THREADING_PROC, 23, -1},
        {24, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {25, 2, 1, 12, MAIN_CORE_PROC, 12, -1},
        {26, 0, 0, 1, MAIN_CORE_PROC, 1, -1},         {27, 2, 1, 13, MAIN_CORE_PROC, 13, -1},
        {28, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {29, 2, 1, 14, MAIN_CORE_PROC, 14, -1},
        {30, 0, 0, 3, MAIN_CORE_PROC, 3, -1},         {31, 2, 1, 15, MAIN_CORE_PROC, 15, -1},
        {32, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {33, 2, 1, 16, MAIN_CORE_PROC, 16, -1},
        {34, 0, 0, 5, MAIN_CORE_PROC, 5, -1},         {35, 2, 1, 17, MAIN_CORE_PROC, 17, -1},
        {36, 1, 0, 6, MAIN_CORE_PROC, 6, -1},         {37, 3, 1, 18, MAIN_CORE_PROC, 18, -1},
        {38, 1, 0, 7, MAIN_CORE_PROC, 7, -1},         {39, 3, 1, 19, MAIN_CORE_PROC, 19, -1},
        {40, 1, 0, 8, MAIN_CORE_PROC, 8, -1},         {41, 3, 1, 20, MAIN_CORE_PROC, 20, -1},
        {42, 1, 0, 9, MAIN_CORE_PROC, 9, -1},         {43, 3, 1, 21, MAIN_CORE_PROC, 21, -1},
        {44, 1, 0, 10, MAIN_CORE_PROC, 10, -1},       {45, 3, 1, 22, MAIN_CORE_PROC, 22, -1},
        {46, 1, 0, 11, MAIN_CORE_PROC, 11, -1},       {47, 3, 1, 23, MAIN_CORE_PROC, 23, -1},
    },
    {
        {"0,24", "0,24", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"1,25", "1,25", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"2,26", "2,26", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"3,27", "3,27", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"4,28", "4,28", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"5,29", "5,29", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"6,30", "6,30", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"7,31", "7,31", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"8,32", "8,32", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"9,33", "9,33", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"10,34", "10,34", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"11,35", "11,35", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"12,36", "12,36", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"13,37", "13,37", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"14,38", "14,38", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"15,39", "15,39", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"16,40", "16,40", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"17,41", "17,41", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"18,42", "18,42", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"19,43", "19,43", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"20,44", "20,44", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"21,45", "21,45", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"22,46", "22,46", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"23,47", "23,47", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"0,24", "0,24", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"1,25", "1,25", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"2,26", "2,26", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"3,27", "3,27", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"4,28", "4,28", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"5,29", "5,29", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"6,30", "6,30", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"7,31", "7,31", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"8,32", "8,32", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"9,33", "9,33", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"10,34", "10,34", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"11,35", "11,35", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"12,36", "12,36", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"13,37", "13,37", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"14,38", "14,38", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"15,39", "15,39", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"16,40", "16,40", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"17,41", "17,41", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"18,42", "18,42", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"19,43", "19,43", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"20,44", "20,44", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"21,45", "21,45", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
        {"22,46", "22,46", "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46"},
        {"23,47", "23,47", "1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47"},
    },
    {{"0,2,4,6,8,10,24,26,28,30,32,34"},
     {"12,14,16,18,20,22,36,38,40,42,44,46"},
     {"1,3,5,7,9,11,25,27,29,31,33,35"},
     {"13,15,17,19,21,23,37,39,41,43,45,47"}},
};
LinuxCpuMapTestCase cache_2sockets_48cores = {
    48,
    2,
    2,
    48,
    {{48, 48, 0, 0, 0, -1, -1}, {24, 24, 0, 0, 0, 0, 0}, {24, 24, 0, 0, 0, 1, 1}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},    {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},    {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},    {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},    {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {8, 0, 0, 8, MAIN_CORE_PROC, 8, -1},    {9, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {10, 0, 0, 10, MAIN_CORE_PROC, 10, -1}, {11, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {12, 0, 0, 12, MAIN_CORE_PROC, 12, -1}, {13, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {14, 0, 0, 14, MAIN_CORE_PROC, 14, -1}, {15, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {16, 0, 0, 16, MAIN_CORE_PROC, 16, -1}, {17, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {18, 0, 0, 18, MAIN_CORE_PROC, 18, -1}, {19, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {20, 0, 0, 20, MAIN_CORE_PROC, 20, -1}, {21, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {22, 0, 0, 22, MAIN_CORE_PROC, 22, -1}, {23, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {24, 1, 1, 24, MAIN_CORE_PROC, 24, -1}, {25, 1, 1, 25, MAIN_CORE_PROC, 25, -1},
        {26, 1, 1, 26, MAIN_CORE_PROC, 26, -1}, {27, 1, 1, 27, MAIN_CORE_PROC, 27, -1},
        {28, 1, 1, 28, MAIN_CORE_PROC, 28, -1}, {29, 1, 1, 29, MAIN_CORE_PROC, 29, -1},
        {30, 1, 1, 30, MAIN_CORE_PROC, 30, -1}, {31, 1, 1, 31, MAIN_CORE_PROC, 31, -1},
        {32, 1, 1, 32, MAIN_CORE_PROC, 32, -1}, {33, 1, 1, 33, MAIN_CORE_PROC, 33, -1},
        {34, 1, 1, 34, MAIN_CORE_PROC, 34, -1}, {35, 1, 1, 35, MAIN_CORE_PROC, 35, -1},
        {36, 1, 1, 36, MAIN_CORE_PROC, 36, -1}, {37, 1, 1, 37, MAIN_CORE_PROC, 37, -1},
        {38, 1, 1, 38, MAIN_CORE_PROC, 38, -1}, {39, 1, 1, 39, MAIN_CORE_PROC, 39, -1},
        {40, 1, 1, 40, MAIN_CORE_PROC, 40, -1}, {41, 1, 1, 41, MAIN_CORE_PROC, 41, -1},
        {42, 1, 1, 42, MAIN_CORE_PROC, 42, -1}, {43, 1, 1, 43, MAIN_CORE_PROC, 43, -1},
        {44, 1, 1, 44, MAIN_CORE_PROC, 44, -1}, {45, 1, 1, 45, MAIN_CORE_PROC, 45, -1},
        {46, 1, 1, 46, MAIN_CORE_PROC, 46, -1}, {47, 1, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {{"0"}, {"0"}, {"0-23"}},    {{"1"}, {"1"}, {"0-23"}},    {{"2"}, {"2"}, {"0-23"}},
        {{"3"}, {"3"}, {"0-23"}},    {{"4"}, {"4"}, {"0-23"}},    {{"5"}, {"5"}, {"0-23"}},
        {{"6"}, {"6"}, {"0-23"}},    {{"7"}, {"7"}, {"0-23"}},    {{"8"}, {"8"}, {"0-23"}},
        {{"9"}, {"9"}, {"0-23"}},    {{"10"}, {"10"}, {"0-23"}},  {{"11"}, {"11"}, {"0-23"}},
        {{"12"}, {"12"}, {"0-23"}},  {{"13"}, {"13"}, {"0-23"}},  {{"14"}, {"14"}, {"0-23"}},
        {{"15"}, {"15"}, {"0-23"}},  {{"16"}, {"16"}, {"0-23"}},  {{"17"}, {"17"}, {"0-23"}},
        {{"18"}, {"18"}, {"0-23"}},  {{"19"}, {"19"}, {"0-23"}},  {{"20"}, {"20"}, {"0-23"}},
        {{"21"}, {"21"}, {"0-23"}},  {{"22"}, {"22"}, {"0-23"}},  {{"23"}, {"23"}, {"0-23"}},
        {{"24"}, {"24"}, {"24-47"}}, {{"25"}, {"25"}, {"24-47"}}, {{"26"}, {"26"}, {"24-47"}},
        {{"27"}, {"27"}, {"24-47"}}, {{"28"}, {"28"}, {"24-47"}}, {{"29"}, {"29"}, {"24-47"}},
        {{"30"}, {"30"}, {"24-47"}}, {{"31"}, {"31"}, {"24-47"}}, {{"32"}, {"32"}, {"24-47"}},
        {{"33"}, {"33"}, {"24-47"}}, {{"34"}, {"34"}, {"24-47"}}, {{"35"}, {"35"}, {"24-47"}},
        {{"36"}, {"36"}, {"24-47"}}, {{"37"}, {"37"}, {"24-47"}}, {{"38"}, {"38"}, {"24-47"}},
        {{"39"}, {"39"}, {"24-47"}}, {{"40"}, {"40"}, {"24-47"}}, {{"41"}, {"41"}, {"24-47"}},
        {{"42"}, {"42"}, {"24-47"}}, {{"43"}, {"43"}, {"24-47"}}, {{"44"}, {"44"}, {"24-47"}},
        {{"45"}, {"45"}, {"24-47"}}, {{"46"}, {"46"}, {"24-47"}}, {{"47"}, {"47"}, {"24-47"}},
    },
    {{"0-23"}, {"24-47"}},
};
LinuxCpuMapTestCase cache_2sockets_48cores_1 = {
    48,
    2,
    2,
    48,
    {{48, 48, 0, 0, 0, -1, -1}, {24, 24, 0, 0, 0, 0, 0}, {24, 24, 0, 0, 0, 1, 1}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},    {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},    {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},    {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},    {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {8, 0, 0, 8, MAIN_CORE_PROC, 8, -1},    {9, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {10, 0, 0, 10, MAIN_CORE_PROC, 10, -1}, {11, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {12, 0, 0, 12, MAIN_CORE_PROC, 12, -1}, {13, 0, 0, 13, MAIN_CORE_PROC, 13, -1},
        {14, 0, 0, 14, MAIN_CORE_PROC, 14, -1}, {15, 0, 0, 15, MAIN_CORE_PROC, 15, -1},
        {16, 0, 0, 16, MAIN_CORE_PROC, 16, -1}, {17, 0, 0, 17, MAIN_CORE_PROC, 17, -1},
        {18, 0, 0, 18, MAIN_CORE_PROC, 18, -1}, {19, 0, 0, 19, MAIN_CORE_PROC, 19, -1},
        {20, 0, 0, 20, MAIN_CORE_PROC, 20, -1}, {21, 0, 0, 21, MAIN_CORE_PROC, 21, -1},
        {22, 0, 0, 22, MAIN_CORE_PROC, 22, -1}, {23, 0, 0, 23, MAIN_CORE_PROC, 23, -1},
        {24, 1, 1, 24, MAIN_CORE_PROC, 24, -1}, {25, 1, 1, 25, MAIN_CORE_PROC, 25, -1},
        {26, 1, 1, 26, MAIN_CORE_PROC, 26, -1}, {27, 1, 1, 27, MAIN_CORE_PROC, 27, -1},
        {28, 1, 1, 28, MAIN_CORE_PROC, 28, -1}, {29, 1, 1, 29, MAIN_CORE_PROC, 29, -1},
        {30, 1, 1, 30, MAIN_CORE_PROC, 30, -1}, {31, 1, 1, 31, MAIN_CORE_PROC, 31, -1},
        {32, 1, 1, 32, MAIN_CORE_PROC, 32, -1}, {33, 1, 1, 33, MAIN_CORE_PROC, 33, -1},
        {34, 1, 1, 34, MAIN_CORE_PROC, 34, -1}, {35, 1, 1, 35, MAIN_CORE_PROC, 35, -1},
        {36, 1, 1, 36, MAIN_CORE_PROC, 36, -1}, {37, 1, 1, 37, MAIN_CORE_PROC, 37, -1},
        {38, 1, 1, 38, MAIN_CORE_PROC, 38, -1}, {39, 1, 1, 39, MAIN_CORE_PROC, 39, -1},
        {40, 1, 1, 40, MAIN_CORE_PROC, 40, -1}, {41, 1, 1, 41, MAIN_CORE_PROC, 41, -1},
        {42, 1, 1, 42, MAIN_CORE_PROC, 42, -1}, {43, 1, 1, 43, MAIN_CORE_PROC, 43, -1},
        {44, 1, 1, 44, MAIN_CORE_PROC, 44, -1}, {45, 1, 1, 45, MAIN_CORE_PROC, 45, -1},
        {46, 1, 1, 46, MAIN_CORE_PROC, 46, -1}, {47, 1, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {{"0"}, {"0"}, {"0-23"}},    {{"1"}, {"1"}, {"0-23"}},    {{"2"}, {"2"}, {"0-23"}},
        {{"3"}, {"3"}, {"0-23"}},    {{"4"}, {"4"}, {"0-23"}},    {{"5"}, {"5"}, {"0-23"}},
        {{"6"}, {"6"}, {"0-23"}},    {{"7"}, {"7"}, {"0-23"}},    {{"8"}, {"8"}, {"0-23"}},
        {{"9"}, {"9"}, {"0-23"}},    {{"10"}, {"10"}, {"0-23"}},  {{"11"}, {"11"}, {"0-23"}},
        {{"12"}, {"12"}, {"0-23"}},  {{"13"}, {"13"}, {"0-23"}},  {{"14"}, {"14"}, {"0-23"}},
        {{"15"}, {"15"}, {"0-23"}},  {{"16"}, {"16"}, {"0-23"}},  {{"17"}, {"17"}, {"0-23"}},
        {{"18"}, {"18"}, {"0-23"}},  {{"19"}, {"19"}, {"0-23"}},  {{"20"}, {"20"}, {"0-23"}},
        {{"21"}, {"21"}, {"0-23"}},  {{"22"}, {"22"}, {"0-23"}},  {{"23"}, {"23"}, {"0-23"}},
        {{"24"}, {"24"}, {"24-47"}}, {{"25"}, {"25"}, {"24-47"}}, {{"26"}, {"26"}, {"24-47"}},
        {{"27"}, {"27"}, {"24-47"}}, {{"28"}, {"28"}, {"24-47"}}, {{"29"}, {"29"}, {"24-47"}},
        {{"30"}, {"30"}, {"24-47"}}, {{"31"}, {"31"}, {"24-47"}}, {{"32"}, {"32"}, {"24-47"}},
        {{"33"}, {"33"}, {"24-47"}}, {{"34"}, {"34"}, {"24-47"}}, {{"35"}, {"35"}, {"24-47"}},
        {{"36"}, {"36"}, {"24-47"}}, {{"37"}, {"37"}, {"24-47"}}, {{"38"}, {"38"}, {"24-47"}},
        {{"39"}, {"39"}, {"24-47"}}, {{"40"}, {"40"}, {"24-47"}}, {{"41"}, {"41"}, {"24-47"}},
        {{"42"}, {"42"}, {"24-47"}}, {{"43"}, {"43"}, {"24-47"}}, {{"44"}, {"44"}, {"24-47"}},
        {{"45"}, {"45"}, {"24-47"}}, {{"46"}, {"46"}, {"24-47"}}, {{"47"}, {"47"}, {"24-47"}},
    },
    {},
};
LinuxCpuMapTestCase cache_2sockets_48cores_2 = {
    48,
    4,
    2,
    48,
    {{48, 48, 0, 0, 0, -1, -1},
     {12, 12, 0, 0, 0, 0, 0},
     {12, 12, 0, 0, 0, 1, 0},
     {12, 12, 0, 0, 0, 2, 1},
     {12, 12, 0, 0, 0, 3, 1}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},    {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},    {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},    {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},    {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {8, 0, 0, 8, MAIN_CORE_PROC, 8, -1},    {9, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {10, 0, 0, 10, MAIN_CORE_PROC, 10, -1}, {11, 0, 0, 11, MAIN_CORE_PROC, 11, -1},
        {12, 1, 0, 12, MAIN_CORE_PROC, 12, -1}, {13, 1, 0, 13, MAIN_CORE_PROC, 13, -1},
        {14, 1, 0, 14, MAIN_CORE_PROC, 14, -1}, {15, 1, 0, 15, MAIN_CORE_PROC, 15, -1},
        {16, 1, 0, 16, MAIN_CORE_PROC, 16, -1}, {17, 1, 0, 17, MAIN_CORE_PROC, 17, -1},
        {18, 1, 0, 18, MAIN_CORE_PROC, 18, -1}, {19, 1, 0, 19, MAIN_CORE_PROC, 19, -1},
        {20, 1, 0, 20, MAIN_CORE_PROC, 20, -1}, {21, 1, 0, 21, MAIN_CORE_PROC, 21, -1},
        {22, 1, 0, 22, MAIN_CORE_PROC, 22, -1}, {23, 1, 0, 23, MAIN_CORE_PROC, 23, -1},
        {24, 2, 1, 24, MAIN_CORE_PROC, 24, -1}, {25, 2, 1, 25, MAIN_CORE_PROC, 25, -1},
        {26, 2, 1, 26, MAIN_CORE_PROC, 26, -1}, {27, 2, 1, 27, MAIN_CORE_PROC, 27, -1},
        {28, 2, 1, 28, MAIN_CORE_PROC, 28, -1}, {29, 2, 1, 29, MAIN_CORE_PROC, 29, -1},
        {30, 2, 1, 30, MAIN_CORE_PROC, 30, -1}, {31, 2, 1, 31, MAIN_CORE_PROC, 31, -1},
        {32, 2, 1, 32, MAIN_CORE_PROC, 32, -1}, {33, 2, 1, 33, MAIN_CORE_PROC, 33, -1},
        {34, 2, 1, 34, MAIN_CORE_PROC, 34, -1}, {35, 2, 1, 35, MAIN_CORE_PROC, 35, -1},
        {36, 3, 1, 36, MAIN_CORE_PROC, 36, -1}, {37, 3, 1, 37, MAIN_CORE_PROC, 37, -1},
        {38, 3, 1, 38, MAIN_CORE_PROC, 38, -1}, {39, 3, 1, 39, MAIN_CORE_PROC, 39, -1},
        {40, 3, 1, 40, MAIN_CORE_PROC, 40, -1}, {41, 3, 1, 41, MAIN_CORE_PROC, 41, -1},
        {42, 3, 1, 42, MAIN_CORE_PROC, 42, -1}, {43, 3, 1, 43, MAIN_CORE_PROC, 43, -1},
        {44, 3, 1, 44, MAIN_CORE_PROC, 44, -1}, {45, 3, 1, 45, MAIN_CORE_PROC, 45, -1},
        {46, 3, 1, 46, MAIN_CORE_PROC, 46, -1}, {47, 3, 1, 47, MAIN_CORE_PROC, 47, -1},
    },
    {
        {{"0"}, {"0"}, {"0-23"}},    {{"1"}, {"1"}, {"0-23"}},    {{"2"}, {"2"}, {"0-23"}},
        {{"3"}, {"3"}, {"0-23"}},    {{"4"}, {"4"}, {"0-23"}},    {{"5"}, {"5"}, {"0-23"}},
        {{"6"}, {"6"}, {"0-23"}},    {{"7"}, {"7"}, {"0-23"}},    {{"8"}, {"8"}, {"0-23"}},
        {{"9"}, {"9"}, {"0-23"}},    {{"10"}, {"10"}, {"0-23"}},  {{"11"}, {"11"}, {"0-23"}},
        {{"12"}, {"12"}, {"0-23"}},  {{"13"}, {"13"}, {"0-23"}},  {{"14"}, {"14"}, {"0-23"}},
        {{"15"}, {"15"}, {"0-23"}},  {{"16"}, {"16"}, {"0-23"}},  {{"17"}, {"17"}, {"0-23"}},
        {{"18"}, {"18"}, {"0-23"}},  {{"19"}, {"19"}, {"0-23"}},  {{"20"}, {"20"}, {"0-23"}},
        {{"21"}, {"21"}, {"0-23"}},  {{"22"}, {"22"}, {"0-23"}},  {{"23"}, {"23"}, {"0-23"}},
        {{"24"}, {"24"}, {"24-47"}}, {{"25"}, {"25"}, {"24-47"}}, {{"26"}, {"26"}, {"24-47"}},
        {{"27"}, {"27"}, {"24-47"}}, {{"28"}, {"28"}, {"24-47"}}, {{"29"}, {"29"}, {"24-47"}},
        {{"30"}, {"30"}, {"24-47"}}, {{"31"}, {"31"}, {"24-47"}}, {{"32"}, {"32"}, {"24-47"}},
        {{"33"}, {"33"}, {"24-47"}}, {{"34"}, {"34"}, {"24-47"}}, {{"35"}, {"35"}, {"24-47"}},
        {{"36"}, {"36"}, {"24-47"}}, {{"37"}, {"37"}, {"24-47"}}, {{"38"}, {"38"}, {"24-47"}},
        {{"39"}, {"39"}, {"24-47"}}, {{"40"}, {"40"}, {"24-47"}}, {{"41"}, {"41"}, {"24-47"}},
        {{"42"}, {"42"}, {"24-47"}}, {{"43"}, {"43"}, {"24-47"}}, {{"44"}, {"44"}, {"24-47"}},
        {{"45"}, {"45"}, {"24-47"}}, {{"46"}, {"46"}, {"24-47"}}, {{"47"}, {"47"}, {"24-47"}},
    },
    {{"0-11"}, {"12-23"}, {"24-35"}, {"36-47"}},
};
LinuxCpuMapTestCase cache_2sockets_20cores_hyperthreading = {
    40,
    2,
    2,
    20,
    {{40, 20, 0, 0, 20, -1, -1}, {20, 10, 0, 0, 10, 0, 0}, {20, 10, 0, 0, 10, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 1, 1, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 1, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 1, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 1, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 1, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {21, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {22, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {23, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {24, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {25, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {26, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {27, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {28, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {29, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {30, 1, 1, 10, MAIN_CORE_PROC, 10, -1},       {31, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {32, 1, 1, 12, MAIN_CORE_PROC, 12, -1},       {33, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {34, 1, 1, 14, MAIN_CORE_PROC, 14, -1},       {35, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {36, 1, 1, 16, MAIN_CORE_PROC, 16, -1},       {37, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {38, 1, 1, 18, MAIN_CORE_PROC, 18, -1},       {39, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
    },
    {
        {{"0,20"}, {"0,20"}, {"0-9,20-29"}},     {{"1,21"}, {"1,21"}, {"0-9,20-29"}},
        {{"2,22"}, {"2,22"}, {"0-9,20-29"}},     {{"3,23"}, {"3,23"}, {"0-9,20-29"}},
        {{"4,24"}, {"4,24"}, {"0-9,20-29"}},     {{"5,25"}, {"5,25"}, {"0-9,20-29"}},
        {{"6,26"}, {"6,26"}, {"0-9,20-29"}},     {{"7,27"}, {"7,27"}, {"0-9,20-29"}},
        {{"8,28"}, {"8,28"}, {"0-9,20-29"}},     {{"9,29"}, {"9,29"}, {"0-9,20-29"}},
        {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}},
        {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}},
        {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}},
        {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}},
        {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}},
        {{"0,20"}, {"0,20"}, {"0-9,20-29"}},     {{"1,21"}, {"1,21"}, {"0-9,20-29"}},
        {{"2,22"}, {"2,22"}, {"0-9,20-29"}},     {{"3,23"}, {"3,23"}, {"0-9,20-29"}},
        {{"4,24"}, {"4,24"}, {"0-9,20-29"}},     {{"5,25"}, {"5,25"}, {"0-9,20-29"}},
        {{"6,26"}, {"6,26"}, {"0-9,20-29"}},     {{"7,27"}, {"7,27"}, {"0-9,20-29"}},
        {{"8,28"}, {"8,28"}, {"0-9,20-29"}},     {{"9,29"}, {"9,29"}, {"0-9,20-29"}},
        {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}},
        {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}},
        {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}},
        {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}},
        {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}},
    },
    {{"0-9,20-29"}, {"10-19,30-39"}},
};
LinuxCpuMapTestCase cache_2sockets_20cores_hyperthreading_1 = {
    40,
    2,
    2,
    20,
    {{40, 20, 0, 0, 20, -1, -1}, {20, 10, 0, 0, 10, 0, 0}, {20, 10, 0, 0, 10, 1, 1}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},    {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},    {3, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {4, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},    {5, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {6, 0, 0, 6, HYPER_THREADING_PROC, 6, -1},    {7, 0, 0, 7, HYPER_THREADING_PROC, 7, -1},
        {8, 0, 0, 8, HYPER_THREADING_PROC, 8, -1},    {9, 0, 0, 9, HYPER_THREADING_PROC, 9, -1},
        {10, 1, 1, 10, HYPER_THREADING_PROC, 10, -1}, {11, 1, 1, 11, HYPER_THREADING_PROC, 11, -1},
        {12, 1, 1, 12, HYPER_THREADING_PROC, 12, -1}, {13, 1, 1, 13, HYPER_THREADING_PROC, 13, -1},
        {14, 1, 1, 14, HYPER_THREADING_PROC, 14, -1}, {15, 1, 1, 15, HYPER_THREADING_PROC, 15, -1},
        {16, 1, 1, 16, HYPER_THREADING_PROC, 16, -1}, {17, 1, 1, 17, HYPER_THREADING_PROC, 17, -1},
        {18, 1, 1, 18, HYPER_THREADING_PROC, 18, -1}, {19, 1, 1, 19, HYPER_THREADING_PROC, 19, -1},
        {20, 0, 0, 0, MAIN_CORE_PROC, 0, -1},         {21, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {22, 0, 0, 2, MAIN_CORE_PROC, 2, -1},         {23, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {24, 0, 0, 4, MAIN_CORE_PROC, 4, -1},         {25, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {26, 0, 0, 6, MAIN_CORE_PROC, 6, -1},         {27, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
        {28, 0, 0, 8, MAIN_CORE_PROC, 8, -1},         {29, 0, 0, 9, MAIN_CORE_PROC, 9, -1},
        {30, 1, 1, 10, MAIN_CORE_PROC, 10, -1},       {31, 1, 1, 11, MAIN_CORE_PROC, 11, -1},
        {32, 1, 1, 12, MAIN_CORE_PROC, 12, -1},       {33, 1, 1, 13, MAIN_CORE_PROC, 13, -1},
        {34, 1, 1, 14, MAIN_CORE_PROC, 14, -1},       {35, 1, 1, 15, MAIN_CORE_PROC, 15, -1},
        {36, 1, 1, 16, MAIN_CORE_PROC, 16, -1},       {37, 1, 1, 17, MAIN_CORE_PROC, 17, -1},
        {38, 1, 1, 18, MAIN_CORE_PROC, 18, -1},       {39, 1, 1, 19, MAIN_CORE_PROC, 19, -1},
    },
    {
        {{"0,20"}, {"0,20"}, {"0-9,20-29"}},     {{"1,21"}, {"1,21"}, {"0-9,20-29"}},
        {{"2,22"}, {"2,22"}, {"0-9,20-29"}},     {{"3,23"}, {"3,23"}, {"0-9,20-29"}},
        {{"4,24"}, {"4,24"}, {"0-9,20-29"}},     {{"5,25"}, {"5,25"}, {"0-9,20-29"}},
        {{"6,26"}, {"6,26"}, {"0-9,20-29"}},     {{"7,27"}, {"7,27"}, {"0-9,20-29"}},
        {{"8,28"}, {"8,28"}, {"0-9,20-29"}},     {{"9,29"}, {"9,29"}, {"0-9,20-29"}},
        {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}},
        {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}},
        {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}},
        {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}},
        {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}},
        {{"0,20"}, {"0,20"}, {"0-9,20-29"}},     {{"1,21"}, {"1,21"}, {"0-9,20-29"}},
        {{"2,22"}, {"2,22"}, {"0-9,20-29"}},     {{"3,23"}, {"3,23"}, {"0-9,20-29"}},
        {{"4,24"}, {"4,24"}, {"0-9,20-29"}},     {{"5,25"}, {"5,25"}, {"0-9,20-29"}},
        {{"6,26"}, {"6,26"}, {"0-9,20-29"}},     {{"7,27"}, {"7,27"}, {"0-9,20-29"}},
        {{"8,28"}, {"8,28"}, {"0-9,20-29"}},     {{"9,29"}, {"9,29"}, {"0-9,20-29"}},
        {{"10,30"}, {"10,30"}, {"10-19,30-39"}}, {{"11,31"}, {"11,31"}, {"10-19,30-39"}},
        {{"12,32"}, {"12,32"}, {"10-19,30-39"}}, {{"13,33"}, {"13,33"}, {"10-19,30-39"}},
        {{"14,34"}, {"14,34"}, {"10-19,30-39"}}, {{"15,35"}, {"15,35"}, {"10-19,30-39"}},
        {{"16,36"}, {"16,36"}, {"10-19,30-39"}}, {{"17,37"}, {"17,37"}, {"10-19,30-39"}},
        {{"18,38"}, {"18,38"}, {"10-19,30-39"}}, {{"19,39"}, {"19,39"}, {"10-19,30-39"}},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_16cores_hyperthreading = {
    20,
    1,
    1,
    14,
    {{20, 6, 8, 0, 6, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},  {1, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {2, 0, 0, 1, MAIN_CORE_PROC, 1, -1},        {3, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
        {4, 0, 0, 2, MAIN_CORE_PROC, 2, -1},        {5, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},  {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},  {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1}, {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, EFFICIENT_CORE_PROC, 6, -1},  {13, 0, 0, 7, EFFICIENT_CORE_PROC, 6, -1},
        {14, 0, 0, 8, EFFICIENT_CORE_PROC, 6, -1},  {15, 0, 0, 9, EFFICIENT_CORE_PROC, 6, -1},
        {16, 0, 0, 10, EFFICIENT_CORE_PROC, 7, -1}, {17, 0, 0, 11, EFFICIENT_CORE_PROC, 7, -1},
        {18, 0, 0, 12, EFFICIENT_CORE_PROC, 7, -1}, {19, 0, 0, 13, EFFICIENT_CORE_PROC, 7, -1},
    },
    {
        {"0,5", "0,5", "0-19"},  {"1-2", "1-2", "0-19"},  {"1-2", "1-2", "0-19"},     {"3-4", "3-4", "0-19"},
        {"3-4", "3-4", "0-19"},  {"0,5", "0,5", "0-19"},  {"6-7", "6-7", "0-19"},     {"6-7", "6-7", "0-19"},
        {"8-9", "8-9", "0-19"},  {"8-9", "8-9", "0-19"},  {"10-11", "10-11", "0-19"}, {"10-11", "10-11", "0-19"},
        {"12", "12-15", "0-19"}, {"13", "12-15", "0-19"}, {"14", "12-15", "0-19"},    {"15", "12-15", "0-19"},
        {"16", "16-19", "0-19"}, {"17", "16-19", "0-19"}, {"18", "16-19", "0-19"},    {"19", "16-19", "0-19"},
        {"20", "20-21", ""},     {"21", "20-21", ""},
    },
    {
        {"0-21"},
    },
};
LinuxCpuMapTestCase cache_1sockets_16cores = {
    16,
    1,
    1,
    16,
    {{16, 4, 8, 4, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, EFFICIENT_CORE_PROC, 4, -1},
        {5, 0, 0, 5, EFFICIENT_CORE_PROC, 4, -1},
        {6, 0, 0, 6, EFFICIENT_CORE_PROC, 4, -1},
        {7, 0, 0, 7, EFFICIENT_CORE_PROC, 4, -1},
        {8, 0, 0, 8, EFFICIENT_CORE_PROC, 5, -1},
        {9, 0, 0, 9, EFFICIENT_CORE_PROC, 5, -1},
        {10, 0, 0, 10, EFFICIENT_CORE_PROC, 5, -1},
        {11, 0, 0, 11, EFFICIENT_CORE_PROC, 5, -1},
        {12, 0, 0, 12, LP_EFFICIENT_CORE_PROC, 6, -1},
        {13, 0, 0, 13, LP_EFFICIENT_CORE_PROC, 6, -1},
        {14, 0, 0, 14, LP_EFFICIENT_CORE_PROC, 6, -1},
        {15, 0, 0, 15, LP_EFFICIENT_CORE_PROC, 6, -1},
    },
    {
        {"0", "0", "0-11"},
        {"1", "1", "0-11"},
        {"2", "2", "0-11"},
        {"3", "3", "0-11"},
        {"4", "4-7", "0-11"},
        {"5", "4-7", "0-11"},
        {"6", "4-7", "0-11"},
        {"7", "4-7", "0-11"},
        {"8", "8-11", "0-11"},
        {"9", "8-11", "0-11"},
        {"10", "8-11", "0-11"},
        {"11", "8-11", "0-11"},
        {"12", "12-15", ""},
        {"13", "12-15", ""},
        {"14", "12-15", ""},
        {"15", "12-15", ""},
    },
    {
        {"0-15"},
    },
};
LinuxCpuMapTestCase cache_1sockets_14cores_hyperthreading = {
    20,
    1,
    1,
    14,
    {{20, 6, 8, 0, 6, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},  {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},  {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},  {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},  {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},  {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1}, {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, EFFICIENT_CORE_PROC, 6, -1},  {13, 0, 0, 7, EFFICIENT_CORE_PROC, 6, -1},
        {14, 0, 0, 8, EFFICIENT_CORE_PROC, 6, -1},  {15, 0, 0, 9, EFFICIENT_CORE_PROC, 6, -1},
        {16, 0, 0, 10, EFFICIENT_CORE_PROC, 7, -1}, {17, 0, 0, 11, EFFICIENT_CORE_PROC, 7, -1},
        {18, 0, 0, 12, EFFICIENT_CORE_PROC, 7, -1}, {19, 0, 0, 13, EFFICIENT_CORE_PROC, 7, -1},
    },
    {
        {{"0-1"}, {"0-1"}, {"0-19"}},  {{"0-1"}, {"0-1"}, {"0-19"}},     {{"2-3"}, {"2-3"}, {"0-19"}},
        {{"2-3"}, {"2-3"}, {"0-19"}},  {{"4-5"}, {"4-5"}, {"0-19"}},     {{"4-5"}, {"4-5"}, {"0-19"}},
        {{"6-7"}, {"6-7"}, {"0-19"}},  {{"6-7"}, {"6-7"}, {"0-19"}},     {{"8-9"}, {"8-9"}, {"0-19"}},
        {{"8-9"}, {"8-9"}, {"0-19"}},  {{"10-11"}, {"10-11"}, {"0-19"}}, {{"10-11"}, {"10-11"}, {"0-19"}},
        {{"12"}, {"12-15"}, {"0-19"}}, {{"13"}, {"12-15"}, {"0-19"}},    {{"14"}, {"12-15"}, {"0-19"}},
        {{"15"}, {"12-15"}, {"0-19"}}, {{"16"}, {"16-19"}, {"0-19"}},    {{"17"}, {"16-19"}, {"0-19"}},
        {{"18"}, {"16-19"}, {"0-19"}}, {{"19"}, {"16-19"}, {"0-19"}},
    },
    {{"0-19"}},
};
LinuxCpuMapTestCase cache_1sockets_14cores_hyperthreading_1 = {
    20,
    1,
    1,
    14,
    {{20, 6, 8, 0, 6, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},  {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},  {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},  {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},  {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},  {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1}, {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {12, 0, 0, 6, EFFICIENT_CORE_PROC, 6, -1},  {13, 0, 0, 7, EFFICIENT_CORE_PROC, 6, -1},
        {14, 0, 0, 8, EFFICIENT_CORE_PROC, 6, -1},  {15, 0, 0, 9, EFFICIENT_CORE_PROC, 6, -1},
        {16, 0, 0, 10, EFFICIENT_CORE_PROC, 7, -1}, {17, 0, 0, 11, EFFICIENT_CORE_PROC, 7, -1},
        {18, 0, 0, 12, EFFICIENT_CORE_PROC, 7, -1}, {19, 0, 0, 13, EFFICIENT_CORE_PROC, 7, -1},
    },
    {
        {{"0-1"}, {"0-1"}, {"0-19"}},  {{"0-1"}, {"0-1"}, {"0-19"}},     {{"2-3"}, {"2-3"}, {"0-19"}},
        {{"2-3"}, {"2-3"}, {"0-19"}},  {{"4-5"}, {"4-5"}, {"0-19"}},     {{"4-5"}, {"4-5"}, {"0-19"}},
        {{"6-7"}, {"6-7"}, {"0-19"}},  {{"6-7"}, {"6-7"}, {"0-19"}},     {{"8-9"}, {"8-9"}, {"0-19"}},
        {{"8-9"}, {"8-9"}, {"0-19"}},  {{"10-11"}, {"10-11"}, {"0-19"}}, {{"10-11"}, {"10-11"}, {"0-19"}},
        {{"12"}, {"12-15"}, {"0-19"}}, {{"13"}, {"12-15"}, {"0-19"}},    {{"14"}, {"12-15"}, {"0-19"}},
        {{"15"}, {"12-15"}, {"0-19"}}, {{"16"}, {"16-19"}, {"0-19"}},    {{"17"}, {"16-19"}, {"0-19"}},
        {{"18"}, {"16-19"}, {"0-19"}}, {{"19"}, {"16-19"}, {"0-19"}},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_14cores = {
    9,
    1,
    1,
    9,
    {{9, 1, 8, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {6, 0, 0, 1, EFFICIENT_CORE_PROC, 1, -1},
        {7, 0, 0, 2, EFFICIENT_CORE_PROC, 1, -1},
        {8, 0, 0, 3, EFFICIENT_CORE_PROC, 1, -1},
        {9, 0, 0, 4, EFFICIENT_CORE_PROC, 1, -1},
        {10, 0, 0, 5, EFFICIENT_CORE_PROC, 2, -1},
        {11, 0, 0, 6, EFFICIENT_CORE_PROC, 2, -1},
        {12, 0, 0, 7, EFFICIENT_CORE_PROC, 2, -1},
        {13, 0, 0, 8, EFFICIENT_CORE_PROC, 2, -1},
    },
    {
        {"0", "0", "0,6-13"},
        {"", "", ""},
        {"", "", ""},
        {"", "", ""},
        {"", "", ""},
        {"", "", ""},
        {"6", "6-9", "0,6-13"},
        {"7", "6-9", "0,6-13"},
        {"8", "6-9", "0,6-13"},
        {"9", "6-9", "0,6-13"},
        {"10", "10-13", "0,6-13"},
        {"11", "10-13", "0,6-13"},
        {"12", "10-13", "0,6-13"},
        {"13", "10-13", "0,6-13"},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_10cores_hyperthreading = {
    12,
    1,
    1,
    10,
    {{12, 2, 8, 0, 2, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, EFFICIENT_CORE_PROC, 2, -1},
        {5, 0, 0, 3, EFFICIENT_CORE_PROC, 2, -1},
        {6, 0, 0, 4, EFFICIENT_CORE_PROC, 2, -1},
        {7, 0, 0, 5, EFFICIENT_CORE_PROC, 2, -1},
        {8, 0, 0, 6, EFFICIENT_CORE_PROC, 3, -1},
        {9, 0, 0, 7, EFFICIENT_CORE_PROC, 3, -1},
        {10, 0, 0, 8, EFFICIENT_CORE_PROC, 3, -1},
        {11, 0, 0, 9, EFFICIENT_CORE_PROC, 3, -1},
    },
    {
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"4"}, {"4-7"}, {"0-11"}},
        {{"5"}, {"4-7"}, {"0-11"}},
        {{"6"}, {"4-7"}, {"0-11"}},
        {{"7"}, {"4-7"}, {"0-11"}},
        {{"8"}, {"8-11"}, {"0-11"}},
        {{"9"}, {"8-11"}, {"0-11"}},
        {{"10"}, {"8-11"}, {"0-11"}},
        {{"11"}, {"8-11"}, {"0-11"}},
    },
    {{"0-11"}},
};
LinuxCpuMapTestCase cache_1sockets_8cores_hyperthreading = {
    12,
    1,
    1,
    8,
    {{12, 4, 4, 0, 4, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
        {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, EFFICIENT_CORE_PROC, 4, -1},
        {9, 0, 0, 5, EFFICIENT_CORE_PROC, 4, -1},
        {10, 0, 0, 6, EFFICIENT_CORE_PROC, 4, -1},
        {11, 0, 0, 7, EFFICIENT_CORE_PROC, 4, -1},
    },
    {
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"4-5"}, {"4-5"}, {"0-11"}},
        {{"4-5"}, {"4-5"}, {"0-11"}},
        {{"6-7"}, {"6-7"}, {"0-11"}},
        {{"6-7"}, {"6-7"}, {"0-11"}},
        {{"8"}, {"8-11"}, {"0-11"}},
        {{"9"}, {"8-11"}, {"0-11"}},
        {{"10"}, {"8-11"}, {"0-11"}},
        {{"11"}, {"8-11"}, {"0-11"}},
    },
    {{"0-11"}},
};
LinuxCpuMapTestCase cache_1sockets_8cores = {
    8,
    1,
    1,
    8,
    {{8, 4, 0, 4, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, LP_EFFICIENT_CORE_PROC, 4, -1},
        {5, 0, 0, 5, LP_EFFICIENT_CORE_PROC, 4, -1},
        {6, 0, 0, 6, LP_EFFICIENT_CORE_PROC, 4, -1},
        {7, 0, 0, 7, LP_EFFICIENT_CORE_PROC, 4, -1},
    },
    {
        {"0", "0", "0-3"},
        {"1", "1", "0-3"},
        {"2", "2", "0-3"},
        {"3", "3", "0-3"},
        {"4", "4-7", ""},
        {"5", "4-7", ""},
        {"6", "4-7", ""},
        {"7", "4-7", ""},
    },
    {
        {"0-7"},
    },
};
LinuxCpuMapTestCase cache_1sockets_8cores_1 = {
    8,
    1,
    1,
    8,
    {{8, 8, 0, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {4, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {5, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
        {6, 0, 0, 6, MAIN_CORE_PROC, 6, -1},
        {7, 0, 0, 7, MAIN_CORE_PROC, 7, -1},
    },
    {
        {"0", "0", "0-7"},
        {"1", "1", "0-7"},
        {"2", "2", "0-7"},
        {"3", "3", "0-7"},
        {"4", "4", "0-7"},
        {"5", "5", "0-7"},
        {"6", "6", "0-7"},
        {"7", "7", "0-7"},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_6cores_hyperthreading = {
    12,
    1,
    1,
    6,
    {{12, 6, 0, 0, 6, 0, 0}},
    {
        {0, 0, 0, 0, HYPER_THREADING_PROC, 0, -1},
        {1, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 1, HYPER_THREADING_PROC, 1, -1},
        {3, 0, 0, 1, MAIN_CORE_PROC, 1, -1},
        {4, 0, 0, 2, HYPER_THREADING_PROC, 2, -1},
        {5, 0, 0, 2, MAIN_CORE_PROC, 2, -1},
        {6, 0, 0, 3, HYPER_THREADING_PROC, 3, -1},
        {7, 0, 0, 3, MAIN_CORE_PROC, 3, -1},
        {8, 0, 0, 4, HYPER_THREADING_PROC, 4, -1},
        {9, 0, 0, 4, MAIN_CORE_PROC, 4, -1},
        {10, 0, 0, 5, HYPER_THREADING_PROC, 5, -1},
        {11, 0, 0, 5, MAIN_CORE_PROC, 5, -1},
    },
    {
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"0-1"}, {"0-1"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"2-3"}, {"2-3"}, {"0-11"}},
        {{"4-5"}, {"4-5"}, {"0-11"}},
        {{"4-5"}, {"4-5"}, {"0-11"}},
        {{"6-7"}, {"6-7"}, {"0-11"}},
        {{"6-7"}, {"6-7"}, {"0-11"}},
        {{"8-9"}, {"8-9"}, {"0-11"}},
        {{"8-9"}, {"8-9"}, {"0-11"}},
        {{"10-11"}, {"10-11"}, {"0-11"}},
        {{"10-11"}, {"10-11"}, {"0-11"}},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_4cores = {
    4,
    1,
    1,
    4,
    {{4, 4, 0, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, MAIN_CORE_PROC, 0, -1},
        {1, 0, 0, 1, MAIN_CORE_PROC, 0, -1},
        {2, 0, 0, 2, MAIN_CORE_PROC, 1, -1},
        {3, 0, 0, 3, MAIN_CORE_PROC, 1, -1},
    },
    {
        {{"0"}, {"0-1"}, {"0-3"}},
        {{"1"}, {"0-1"}, {"0-3"}},
        {{"2"}, {"2-3"}, {"0-3"}},
        {{"3"}, {"2-3"}, {"0-3"}},
    },
    {},
};
LinuxCpuMapTestCase cache_1sockets_4cores_1 = {
    4,
    1,
    1,
    4,
    {{4, 0, 4, 0, 0, 0, 0}},
    {
        {0, 0, 0, 0, EFFICIENT_CORE_PROC, 0, -1},
        {1, 0, 0, 1, EFFICIENT_CORE_PROC, 0, -1},
        {2, 0, 0, 2, EFFICIENT_CORE_PROC, 0, -1},
        {3, 0, 0, 3, EFFICIENT_CORE_PROC, 0, -1},
    },
    {
        {"0", "0-3", ""},
        {"1", "0-3", ""},
        {"2", "0-3", ""},
        {"3", "0-3", ""},
    },
    {},
};
LinuxCpuMapTestCase cache_VM_cache_0 = {
    0,
    0,
    0,
    0,
    {},
    {},
    {
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
        {{"0-31"}, {"0-31"}, {"0-31"}}, {{"0-31"}, {"0-31"}, {"0-31"}},
    },
    {},
};

TEST_P(LinuxCpuMapCacheParserTests, LinuxCache) {}

INSTANTIATE_TEST_SUITE_P(CPUMap,
                         LinuxCpuMapCacheParserTests,
                         testing::Values(cache_2sockets_104cores_hyperthreading,
                                         cache_1sockets_96cores,
                                         cache_2sockets_56cores_hyperthreading,
                                         cache_2sockets_48cores_hyperthreading,
                                         cache_2sockets_48cores_hyperthreading_1,
                                         cache_2sockets_24cores_hyperthreading,
                                         cache_2sockets_24cores_hyperthreading_1,
                                         cache_2sockets_48cores,
                                         cache_2sockets_48cores_1,
                                         cache_2sockets_48cores_2,
                                         cache_2sockets_20cores_hyperthreading,
                                         cache_2sockets_20cores_hyperthreading_1,
                                         cache_1sockets_16cores_hyperthreading,
                                         cache_1sockets_16cores,
                                         cache_1sockets_14cores_hyperthreading,
                                         cache_1sockets_14cores_hyperthreading_1,
                                         cache_1sockets_14cores,
                                         cache_1sockets_10cores_hyperthreading,
                                         cache_1sockets_8cores_hyperthreading,
                                         cache_1sockets_8cores,
                                         cache_1sockets_8cores_1,
                                         cache_1sockets_6cores_hyperthreading,
                                         cache_1sockets_4cores,
                                         cache_1sockets_4cores_1,
                                         cache_VM_cache_0));

TEST_P(LinuxGetCpuMapFromCoresTests, LinuxCore) {}

INSTANTIATE_TEST_SUITE_P(CPUMap,
                         LinuxGetCpuMapFromCoresTests,
                         testing::Values(cache_2sockets_104cores_hyperthreading,
                                         cache_2sockets_48cores,
                                         cache_2sockets_20cores_hyperthreading,
                                         cache_1sockets_14cores_hyperthreading,
                                         cache_1sockets_10cores_hyperthreading,
                                         cache_1sockets_8cores_hyperthreading));
#endif
}  // namespace
